diff --git a/front/package-lock.json b/front/package-lock.json index aaf9802..05d79d4 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -14,26 +14,26 @@ } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -43,12 +43,12 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.0.tgz", + "integrity": "sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.14.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -73,27 +73,28 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", + "@babel/compat-data": "^7.13.15", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.0.tgz", + "integrity": "sha512-6pXDPguA5zC40Y8oI5mqr+jEUpjMJonKvknvA+vD8CYDz5uuXEwWBK8sRAsE/t3gfb1k15AQb9RhwpscC4nUJQ==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13" } }, @@ -108,9 +109,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -153,13 +154,13 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" } }, "@babel/helper-member-expression-to-functions": { @@ -181,19 +182,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-simple-access": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "@babel/helper-optimise-call-expression": { @@ -262,9 +263,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", "dev": true }, "@babel/helper-validator-option": { @@ -286,31 +287,31 @@ } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", "dev": true, "requires": { "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz", + "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==", "dev": true }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { @@ -325,9 +326,9 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0", @@ -345,6 +346,16 @@ "@babel/helper-plugin-utils": "^7.13.0" } }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + } + }, "@babel/plugin-proposal-dynamic-import": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", @@ -449,6 +460,18 @@ "@babel/helper-plugin-utils": "^7.13.0" } }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", @@ -477,6 +500,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -558,6 +590,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, "@babel/plugin-syntax-top-level-await": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", @@ -597,12 +638,12 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz", + "integrity": "sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-classes": { @@ -630,9 +671,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0" @@ -705,25 +746,25 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-simple-access": "^7.13.12", "babel-plugin-dynamic-import-node": "^2.3.3" } }, @@ -741,12 +782,12 @@ } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0" } }, @@ -797,9 +838,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" @@ -880,18 +921,19 @@ } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.0.tgz", + "integrity": "sha512-GWRCdBv2whxqqaSi7bo/BEXf070G/fWFMEdCnmoRg2CZJy4GK06ovFuEjJrZhDRXYgBsYtxVbG8GUHvw+UWBkQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", "@babel/plugin-proposal-dynamic-import": "^7.13.8", "@babel/plugin-proposal-export-namespace-from": "^7.12.13", "@babel/plugin-proposal-json-strings": "^7.13.8", @@ -902,9 +944,11 @@ "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -914,14 +958,15 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", "@babel/plugin-syntax-top-level-await": "^7.12.13", "@babel/plugin-transform-arrow-functions": "^7.13.0", "@babel/plugin-transform-async-to-generator": "^7.13.0", "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.13.16", "@babel/plugin-transform-classes": "^7.13.0", "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", "@babel/plugin-transform-dotall-regex": "^7.12.13", "@babel/plugin-transform-duplicate-keys": "^7.12.13", "@babel/plugin-transform-exponentiation-operator": "^7.12.13", @@ -929,16 +974,16 @@ "@babel/plugin-transform-function-name": "^7.12.13", "@babel/plugin-transform-literals": "^7.12.13", "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-amd": "^7.14.0", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-modules-umd": "^7.14.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", "@babel/plugin-transform-new-target": "^7.12.13", "@babel/plugin-transform-object-super": "^7.12.13", "@babel/plugin-transform-parameters": "^7.13.0", "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", "@babel/plugin-transform-reserved-words": "^7.12.13", "@babel/plugin-transform-shorthand-properties": "^7.12.13", "@babel/plugin-transform-spread": "^7.13.0", @@ -948,10 +993,10 @@ "@babel/plugin-transform-unicode-escapes": "^7.12.13", "@babel/plugin-transform-unicode-regex": "^7.12.13", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", + "@babel/types": "^7.14.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", "core-js-compat": "^3.9.0", "semver": "^6.3.0" } @@ -970,9 +1015,9 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -998,29 +1043,28 @@ } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", + "@babel/generator": "^7.14.0", "@babel/helper-function-name": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.0.tgz", + "integrity": "sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.0", "to-fast-properties": "^2.0.0" } }, @@ -1470,33 +1514,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.0" } }, "babel-polyfill": { @@ -1806,16 +1850,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" } }, "buffer": { @@ -1916,9 +1960,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001207", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", - "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", + "version": "1.0.30001220", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001220.tgz", + "integrity": "sha512-pjC2T4DIDyGAKTL4dMvGUQaMUHRmhvPpAgNNTa14jaBWHu+bLQgvpFqElxh9L4829Fdx0PlKiMp3wnYldRtECA==", "dev": true }, "chalk": { @@ -2310,12 +2354,12 @@ "dev": true }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.2.tgz", + "integrity": "sha512-gYhNwu7AJjecNtRrIfyoBabQ3ZG+llfPmg9BifIX8yxIpDyfNLRM73zIjINSm6z3dMdI1nwNC9C7uiy4pIC6cw==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { @@ -2606,9 +2650,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.708", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.708.tgz", - "integrity": "sha512-+A8ggYZ5riOLMcVAuzHx6bforaPzaiLnW1QOMD2SlMYQVi7QQTyQ/WrlZoebIH9ikmgr+tLJGpNITFFCUiQcPw==", + "version": "1.3.725", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.725.tgz", + "integrity": "sha512-2BbeAESz7kc6KBzs7WVrMc1BY5waUphk4D4DX5dSQXJhsc3tP5ZFaiyuL0AB7vUKzDYpIeYwTYlEfxyjsGUrhw==", "dev": true }, "elliptic": { @@ -3748,9 +3792,9 @@ "dev": true }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", "dev": true, "requires": { "has": "^1.0.3" @@ -5727,9 +5771,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" diff --git a/front/package.json b/front/package.json index 1ca54d4..5e44633 100644 --- a/front/package.json +++ b/front/package.json @@ -21,8 +21,8 @@ "author": "Fabrice PENHOËT", "license": "GPL-3.0-or-later", "devDependencies": { - "@babel/core": "^7.13.14", - "@babel/preset-env": "^7.13.12", + "@babel/core": "^7.14.0", + "@babel/preset-env": "^7.14.0", "babel-loader": "^8.2.2", "babel-polyfill": "^6.26.0", "webpack": "^4.46.0", diff --git a/front/public/JS/accountUser.app.js b/front/public/JS/accountUser.app.js index 47ce580..1dc8ca3 100644 --- a/front/public/JS/accountUser.app.js +++ b/front/public/JS/accountUser.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -662,99 +671,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1591,4 +1579,4 @@ const showBtnPayment = choice => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC91c2VyJCIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9nZW5lcmFsLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3N1YnNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci91c2VyLmpzIiwid2VicGFjazovLy8uLi90b29scy9tYWluLmpzIiwid2VicGFjazovLy8uLi92aWV3cyBzeW5jIF5cXC5cXC8uKlxcLmpzJCIsIndlYnBhY2s6Ly8vLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FjY291bnRVc2VyLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvd2VicG9ydGFnZS5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxsU3Vic2NyaXB0aW9uUHJvY2Vzc2VkIiwiaW5mb3NFeHBpcmF0ZWQiLCJpbmZvc0V4cGlyYXRlZEFkbWluIiwiaW5mb3NOYkRheXMiLCJpbmZvc05iRGF5c0FkbWluIiwiaW5mb3NQYXltZW50c0FkbWluIiwiaXNOb3RWYWxpZGVkIiwibWFpbEVuZEZyZWVUaW1lQm9keUhUTUwiLCJtYWlsRW5kRnJlZVRpbWVCb2R5VHh0IiwibWFpbEVuZEZyZWVUaW1lTGlua1R4dCIsIm1haWxFbmRGcmVlVGltZU1lc3NhZ2UiLCJtYWlsRW5kRnJlZVRpbWVTdWJqZWN0IiwibWFpbEV4cGlyYXRpb25Cb2R5SFRNTCIsIm1haWxFeHBpcmF0aW9uQm9keVR4dCIsIm1haWxFeHBpcmF0aW9uTGlua1R4dCIsIm1haWxFeHBpcmF0aW9uTWVzc2FnZSIsIm1haWxFeHBpcmF0aW9uUmVsYXVuY2hUeHQiLCJtYWlsRXhwaXJhdGlvblN1YmplY3QiLCJtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IiwibWFpbE5ld1F1ZXN0aW9ubmFpcmVCb2R5VHh0IiwibWFpbFN0b3BNYWlsTGlua1R4dCIsIm5lZWRLbm93SWZOb3RpY2VPayIsIm5lZWRJbnRlZ2VyTnVtYmVyT2ZEYXlzIiwibmVlZE1pbk51bWJlck9mRGF5cyIsIm5lZWROb3RUb29Mb25nRGF5c0xpc3QiLCJuZWVkTnVtYmVyT2ZEYXlzIiwibmVlZFVuaXF1ZURheXNMaXN0IiwibmVlZFZhbGlkRGF5c0xpc3QiLCJub05ld1F1ZXN0aW9ubmFpcmVGb3JVc2VyIiwidW5zdWJzY3JpcHRpb25PayIsInVuc3Vic2NyaXB0aW9uRmFpbCIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJjb25maWdVc2VycyIsImRpdkNyYXNoIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdk1haW4iLCJkaXZNZXNzYWdlIiwiZGl2UmVzcG9uc2UiLCJkaXZHb2RmYXRoZXJJbmZvcyIsImRpdkdvZGNoaWxkcyIsImRpdlN1YnNjcmliZUluZm9zIiwiZGl2U3Vic2NyaWJlSW50cm8iLCJmb3JtQWNjb3VudCIsInNob3dHRkVtYWlsIiwic2hvd0dGQ29kZSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwibWVzc2FnZSIsImNvbG9yIiwid2luZG93IiwibG9jYXRpb24iLCJzdHlsZSIsImRpc3BsYXkiLCJoYXNoIiwiYXNzaWduIiwiZ2V0TG9jYWx5IiwiYWRkRWxlbWVudCIsInJlbW92ZUxvY2FseSIsInVzZXIiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsInNldEF0dHJpYnV0ZXNUb0lucHV0cyIsImdldEluZm9zIiwieGhyR2V0SW5mb3MiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwiVXNlciIsIlN1YnNjcmlwdGlvbiIsImRhdGEiLCJlbGVtZW50cyIsImNoZWNrZWQiLCJyZWNlaXB0RGF5cyIsImlubmVySFRNTCIsImJlZ2luU3ViVFMiLCJjcmVhdGVkQXQiLCJnZXRUaW1lIiwibnVtYmVyT2ZEYXlzIiwibmJEYXlzT2siLCJyb3VuZCIsIm5vdyIsInNldFJlcXVlc3RIZWFkZXIiLCJ0b2tlbiIsInNlbmQiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ0aW1lRGlmZmVyZW5jZSIsImdldFRpbWVEaWZmZXJlbmNlIiwieGhyVXNlclVwZGF0ZSIsImRlbGV0ZU9rIiwiQXJyYXkiLCJpc0FycmF5IiwiZXJyb3JzIiwib3V0cHV0Iiwic3RyaW5naWZ5IiwiYWJvOSIsImFibzE4IiwiYWJvMzYiLCJhYm81NCIsIkNHViIsImRpdldQQnRucyIsInVuQ2hlY2tBbGxPdGhlcnMiLCJzaG93QnRuUGF5bWVudCIsInhockdldEdvZGNoaWxkcyIsInR4dEdvZGNoaWxkcyIsIm5iR29kY2hpbGRzIiwiY29uc29sZSIsImVycm9yIiwic2F2ZUxvY2FseSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImxvZyIsImxpbmsiLCJob21lUGFnZSIsImlucHV0c0NvbmYiLCJteUZvcm0iLCJpZElucHV0IiwiaW5wdXRIVE1MIiwiYXR0cmlidXRlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJlbXB5QW5kSGlkZUZvcm0iLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0IiwiY2hlY2tCb3hlcyIsImNob2ljZSIsImJ0bnMiXSwibWFwcGluZ3Mi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IGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9hY2NvdW50VXNlci5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvc3Vic2NyaXB0aW9uXCI6IFwiLi4vbGFuZy9mci9zdWJzY3JpcHRpb24uanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9zdWJzY3JpcHRpb24kXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQgOiBcIlRvdXMgbGVzIGFib25uw6lzIG9udCDDqXTDqSB0cmFpdMOpcyBwb3VyIGxlIG1vbWVudC5cIixcbiAgICBpbmZvc0V4cGlyYXRlZDogXCJWb3RyZSBhYm9ubmVtZW50IGEgZXhwaXLDqSwgbWFpcyBpbCB2b3VzIHJlc3RlIGVuY29yZSBxdWVscXVlcyBqb3VycyBhdmFudCBxdWUgdm90cmUgY29tcHRlIGV0IHZvcyBkb25uw6llcyBuZSBzb2llbnQgY29tcGzDqHRlbWVudCBzdXBwcmltw6llcy48YnI+UG91ciBjZSBmYWlyZSwgc3VpdmV6IHNhbnMgdGFyZGVyIGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc0V4cGlyYXRlZEFkbWluOiBcIkNldCBhYm9ubmVtZW50IGEgZXhwaXLDqS5cIixcbiAgICBpbmZvc05iRGF5czogXCJWb3RyZSBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+Ljxicj5Wb3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCBwcm9sb25nZXIgdm90cmUgYWJvbm5lbWVudCBlbiBzdWl2YW50IGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc05iRGF5c0FkbWluOiBcIkNldCBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+LlwiLFxuICAgIGluZm9zUGF5bWVudHNBZG1pbiA6IFwiREFURV9QQVlNRU5UIDogcGFpZW1lbnQgZGUgQU1PVU5UIOKCrCBhdSBub20gZGUgQ0xJRU5UX05BTUUuXCIsXG4gICAgaXNOb3RWYWxpZGVkIDogXCJDZXQgdXRpbGlzYXRldXIgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLjxicj5Wb3VzIHBvdXZleiBsZSBmYWlyZSDDoCBzYSBwbGFjZSA8YSBocmVmPScjdmFsaWRhdGlvbk9rJz5lbiBjb2NoYW50IGxhIGNhc2UgaW5kaXF1w6llPC9hPiBldCBlbnJlZ2lzdHJhbnQuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keUhUTUw6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgc2FucyB0YXJkZXIgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy48L3A+XCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IGdyYXR1aXQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuXFxuXFxuUG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc2FucyBhdHRlbmRyZSBzb3VzY3JpcmUgw6AgdW4gYWJvbm5lbWVudCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IDogXCJNJ2Fib25uZXIuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTWVzc2FnZTogXCIgcmVsYW5jZXMgZW52b3nDqWVzLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZVN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IHZhIGV4cGlyZXJcIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuPGJyPjxicj5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFeHBpcmF0aW9uQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIFNJVEVfTkFNRSwgdm91cyBwb3V2ZXogbGUgcHJvbG9uZ2VyIGTDqHMgYXVqb3VyZCdodWkgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEV4cGlyYXRpb25MaW5rVHh0IDogXCJQcm9sb25nZXIgbW9uIGFib25uZW1lbnQuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25NZXNzYWdlOiBcIkZJUlNUIHByZW1pw6hyZXMgZXQgU0VDT05EIGRldXhpw6htZXMgcmVsYW5jZXMgZW52b3nDqWVzIHBvdXIgZGVzIGFib25uZW1lbnRzIGV4cGlyYW50IGQnaWNpIHBldS5cIixcbiAgICBtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0OiBcIltSYXBwZWxdIFwiLFxuICAgIG1haWxFeHBpcmF0aW9uU3ViamVjdDogXCJWb3RyZSBhYm9ubmVtZW50IHZhIGJpZW50w7R0IGV4cGlyZXJcIixcbiAgICBtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb2ljaSBsZSBsaWVuIHZlcnMgbGUgbm91dmVsIGFydGljbGUgw6AgbGlyZSA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlYXUgcXVpeiA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxTdG9wTWFpbExpbmtUeHQgOiBcIlN0b3BwZXIgbGVzIGVudm9pcy5cIixcbiAgICBuZWVkS25vd0lmTm90aWNlT2sgOiBcIklsIG1hbnF1ZSBsJ2luZm9ybWF0aW9uIHN1ciBsJ2FjY2VwdGF0aW9uIG91IG5vbiBkZSByZWNldm9pciBkZXMgbm90aWZpY2F0aW9ucy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIuXCIsXG4gICAgbmVlZE1pbk51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmICFcIixcbiAgICBuZWVkTm90VG9vTG9uZ0RheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQgKHRyb3AgbG9uZ3VlKS5cIixcbiAgICBuZWVkTnVtYmVyT2ZEYXlzIDogXCJJbCBmYXV0IHVuIG5vbWJyZSBkZSBqb3VycyBwb3VyIGwnYWJvbm5lbWVudC5cIixcbiAgICBuZWVkVW5pcXVlRGF5c0xpc3QgOiBcIkxhIGxpc3RlIGRlIGpvdXJzIHPDqWxlY3Rpb25uw6lzIG4nYSBwYXMgbGUgYm9uIGZvcm1hdC4gRG91YmxvbiA6IFwiLFxuICAgIG5lZWRWYWxpZERheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIENhcmFjdMOocmUgbm9uIHZhbGlkZSA6IFwiLFxuICAgIG5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIgOiBcIkF1Y3VuIG5vdXZlYXUgcXVlc3Rpb25uYWlyZSB0cm91dsOpIHBvdXIgdW4gYWJvbm7DqSA6IFwiLFxuICAgIHVuc3Vic2NyaXB0aW9uT2sgOiBcIlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIHByaXNlIGVuIGNvbXB0ZS4gVm91cyBuZSByZWNldnJleiBwbHVzIGRlIG1lc3NhZ2VzIHZlbmFudCBkdSBzaXRlLCBzYXVmIHBvdXIgdm91cyBzaWduYWxlciBsYSBmaW4gZGUgdm90cmUgYWJvbm5lbWVudC48YnI+Tidow6lzaXRleiBwYXMgPGEgaHJlZj0nLyNVUkwnPsOgIGFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkZSBub3V2ZWF1IGF1dG9yaXNlciBjZXJ0YWlucyBlbnZvaXMuXCIsXG4gICAgdW5zdWJzY3JpcHRpb25GYWlsIDogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBsaWVuIGRlIGTDqXNhYm9ubmVtZW50IG5lIGZvbmN0aW9ubmUgcGFzLjxicj5Wb3VzIHBvdXZleiA8YSBocmVmPScvI1VSTCc+YWNjw6lkZXIgw6Agdm90cmUgY29tcHRlPC9hPiBwb3VyIGTDqXNhY3RpdmVyIGxlcyBlbnZvaXMgbWFudWVsbGVtZW50LlwiXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBERVMgRk9STVVMQUlSRVMgUEVSTUVUVEFOVCBBVVggVVRJTElTQVRFVVJTIERFIE1FVFRSRSDDgCBKT1VSIExFVVJTIElORk9STUFUSU9OUyArIExFVVIgQUJPTk5FTUVOVFxuXG4vLy8gVsOpcmlmaWVyIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlciB2ZXJzIGxlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbiBzaSBjZSBuJ2VzdCBwYXMgbGUgY2FzLlxuLy8vIFNpIGMnZXN0IG9rLCBvbiByw6ljdXDDqHJlIGxlcyBpbmZvcyBkZSBzb24gY29tcHRlIGV0IHNvbiBhYm9ubmVtZW50IGV0IGxlcyBhZmZpY2hlIGRhbnMgbGUgZm9ybXVsYWlyZS5cbi8vLyBVbmUgaW5mb3JtYXRpb24gZXN0IGFmZmljaMOpZSBjb25jZXJuYW50IGxhIHBvc3NpYmlsaXTDqSBkZSBwYXJyYWluYWdlIGV0IGxpc3RlIGxlcyBmaWxsZXVscyBleGlzdGFudHMuXG4vLy8gVW4gbWVudSBwZXJtZXQgw6AgbCd1dGlsaXNhdGV1ciBkJ2FjY8OpZGVyIMOgIGxhIG1vZGlmaWNhdGlvbiBkZSBzZXMgaW5mb3MsIGV0Yy5cbi8vLyBEZXMgYm91dG9ucyBkZSBwYWllbWVudCBzb250IGF1c3NpIGFmZmljaMOpcyBzdWl2YW50IGxlIGNob2l4IGRlIGwndXRpbGlzYXRldXIgcG91ciBsdWkgcGVybWV0dHJlIGRlIHByb2xvbmdlciBzb24gYWJvbm5lbWVudC5cbi8vLyBVbiBtZXNzYWdlIHZlbmFudCBkJ3VuZSBhdXRyZSBwYWdlIHBldXQgYXVzc2kgw6p0cmUgw6AgYWZmaWNoZXIgbG9ycyBkdSBwcmVtaWVyIGNoYXJnZW1lbnQuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpOy8vIGJlc29pbiBkZSB0b3V0ZXMgbGVzIGTDqWNsYXJhdGlvbnMgcG91ciBsYSBmb25jdGlvbiA6IHVwZGF0ZUFjY291bnRMaW5rKClcbmNvbnN0IHsgYmVnaW5Db2RlR29kZmF0aGVyIH0gPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL2luc3RhbmNlXCIpO1xuY29uc3QgY29uZmlnVXNlcnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpOyAvLyBiZXNvaW4gZGUgdG91cyBsZSBmaWNoaWVyIHBvdXIgY29uZmlndXJlciBsZSBmb3JtdWxhaXJlXG5cbi8vIEZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBnZXRDb25maWcsIGdldFRpbWVEaWZmZXJlbmNlIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gU3DDqWNpZmlxdWUgV2ViUG9ydGFnZSBwb3VyIHBhaWVtZW50czpcbmltcG9ydCB7IHNob3dCdG5QYXltZW50LCB1bkNoZWNrQWxsT3RoZXJzIH0gZnJvbSBcIi4vdG9vbHMvd2VicG9ydGFnZS5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgaW5mb3NVc2VyTmJHb2RDaGlsZHMsIGluZm9zVXNlck5vR29kY2hpbGRzLCBuZWVkQmVDb25uZWN0ZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcbmNvbnN0IHsgaW5mb3NFeHBpcmF0ZWQsIGluZm9zTmJEYXlzIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3N1YnNjcmlwdGlvblwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGRpdkNyYXNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdk1haW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1haW4tY29udGVudFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBkaXZHb2RmYXRoZXJJbmZvcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ29kZmF0aGVySW5mb3NcIik7XG5jb25zdCBkaXZHb2RjaGlsZHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvZGNoaWxkc1wiKTtcbmNvbnN0IGRpdlN1YnNjcmliZUluZm9zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpYmVJbmZvc1wiKTtcbmNvbnN0IGRpdlN1YnNjcmliZUludHJvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpYmVJbnRyb1wiKTtcbmNvbnN0IGZvcm1BY2NvdW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50VXBkYXRlXCIpO1xuY29uc3QgbmV3UGFzc3dvcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld1Bhc3N3b3JkXCIpO1xuY29uc3Qgc2hvd0dGRW1haWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvZGZhdGhlckVtYWlsXCIpO1xuY29uc3Qgc2hvd0dGQ29kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ29kZmF0aGVyQ29kZVwiKTtcblxuaGVsbG9EZXYoKTtcblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIG4nZXN0IHBhcyBjb25uZWN0w6kgYXZlYyBsZSBib24gc3RhdHV0LCBwYXMgbGEgcGVpbmUgZCdhbGxlciArIGxvaW4gOlxuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1widXNlclwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbmVlZEJlQ29ubmVjdGVkLCBjb2xvcjpcImVycm9yXCIgfSwgd2luZG93LmxvY2F0aW9uKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAvLyBsJ8OpdmVudHVlbGxlIGFuY3JlIGVzdCBpZ25vcsOpZSwgY2FyIGFic2VudGUgZHUgRE9NIGF2YW50IGQnYXZvaXIgdsOpcmlmacOpIGxhIGNvbm5leGlvblxuICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhhc2ghPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih3aW5kb3cubG9jYXRpb24uaGFzaCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGdldExvY2FseShcIm1lc3NhZ2VcIikpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIGdldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkubWVzc2FnZSwgXCJcIiwgW2dldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkuY29sb3JdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwibWVzc2FnZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNlIGxlIGZvcm11bGFpcmUgcGVybWV0dGFudCBkZSBtZXR0cmUgw6Agam91ciBsZXMgaW5mb3MgOlxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBmb3JtQWNjb3VudCk7XG4gICAgICAgICAgICAvLyBDZXJ0YWlucyBuYXZpZ2F0ZXVycyByZW1wbGlzc2VudCBsZXMgY2hhbXBzIHBhc3N3b3JkIDpcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkLnZhbHVlPVwiXCI7XG5cbiAgICAgICAgICAgIC8vIEZvbmN0aW9uIGFmZmljaGFudCBsZXMgaW5mb3MgY29ubnVlcyBhdSBwcmVtaWVyIGFmZmljaGFnZSwgcHVpcyBhcHLDqHMgZW52b2kgbWlzZSDDoCBqb3VyXG4gICAgICAgICAgICBjb25zdCBnZXRJbmZvcyA9ICgpID0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyR2V0SW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHJHZXRJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldFVzZXJJbmZvcyt1c2VyLmlkKTtcbiAgICAgICAgICAgICAgICB4aHJHZXRJbmZvcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLlVzZXIgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLlN1YnNjcmlwdGlvbiAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLlVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmb3JtQWNjb3VudC5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuVXNlcltkYXRhXSE9PXRydWUgJiYgcmVzcG9uc2UuVXNlcltkYXRhXSE9PWZhbHNlKS8vIGJvb2zDqWVuID0gY2FzZSDDoCBjb2NoZXIgIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1BY2NvdW50LmVsZW1lbnRzW2RhdGFdLnZhbHVlPXJlc3BvbnNlLlVzZXJbZGF0YV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5Vc2VyW2RhdGFdPT10cnVlKSAvLyBzaSBmYWxzZSwgb24gbmUgZmFpdCByaWVuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1BY2NvdW50LmVsZW1lbnRzW1wiXCIrZGF0YV0uY2hlY2tlZD1cImNoZWNrZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqb3VycyBkZSByw6ljZXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbXCJkXCIrcmVzcG9uc2UuU3Vic2NyaXB0aW9uLnJlY2VpcHREYXlzW2ldXS5jaGVja2VkPVwiY2hlY2tlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwiY29kZXNcIiBwb3NzaWJsZXMgw6AgdHJhbnNtZXR0cmUgcG91ciBwYXJyYWluZXIgZCdhdXRyZXMgdXRpbGlzYXRldXJzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dHRkVtYWlsLmlubmVySFRNTD1yZXNwb25zZS5Vc2VyLmVtYWlsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dHRkNvZGUuaW5uZXJIVE1MPWJlZ2luQ29kZUdvZGZhdGhlcityZXNwb25zZS5Vc2VyLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVnaW5TdWJUUz1uZXcgRGF0ZShyZXNwb25zZS5TdWJzY3JpcHRpb24uY3JlYXRlZEF0KS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5TdWJzY3JpcHRpb24ubnVtYmVyT2ZEYXlzICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdkdvZGZhdGhlckluZm9zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlN1YnNjcmliZUluZm9zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5iRGF5c09rPXJlc3BvbnNlLlN1YnNjcmlwdGlvbi5udW1iZXJPZkRheXMtTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1iZWdpblN1YlRTKS8xMDAwLzM2MDAvMjQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5iRGF5c09rID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTdWJzY3JpYmVJbnRybywgXCJwXCIsIGluZm9zTmJEYXlzLnJlcGxhY2UoXCJOQl9EQVlTXCIsIG5iRGF5c09rKSwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTdWJzY3JpYmVJbnRybywgXCJwXCIsIGluZm9zRXhwaXJhdGVkLnJlcGxhY2UoXCJOQl9EQVlTXCIsIG5iRGF5c09rKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3N1YnNjcmliZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb250ZSBsZXMgaW5mb3MgZMOpasOgIGVucmVnaXN0csOpZXMgOlxuICAgICAgICAgICAgZ2V0SW5mb3MoKTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFRyYWl0ZW1lbnQgZGUgbCdlbnZvaSBkJ3VuZSBtaXNlIMOgIGpvdXIgZGVzIGluZm9zXG4gICAgICAgICAgICBmb3JtQWNjb3VudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybUFjY291bnQpO1xuICAgICAgICAgICAgICAgIC8vIHJlY29tcG9zaXRpb24gZGVzIGpvdXJzIHZhbGFibGVzIHBvdXIgbCdhYm9ubmVtZW50IDpcbiAgICAgICAgICAgICAgICBkYXRhcy5yZWNlaXB0RGF5cz1cIlwiO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaT0xOyBpPD03OyBpKyspXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihkYXRhc1tcImRcIitpXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnJlY2VpcHREYXlzKz1cIlwiK2k7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGFzLnRpbWVEaWZmZXJlbmNlPWdldFRpbWVEaWZmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyVXNlclVwZGF0ZSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyVXBkYXRlLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrXCIvXCIrdXNlci5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyVXBkYXRlLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMudXBkYXRlVXNlckluZm9zK3VzZXIuaWQpO1xuICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5tZXNzYWdlIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkYW5zIHRvdXMgbGVzIGNhcywgamUgbWV0cyDDoCBqb3VyIGxlIGNvbnRlbnUgZHUgZm9ybXVsYWlyZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbmZvcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFzLm91dHB1dD1cImh0bWxcIjtcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG9uIHBhc3NlIMOgIGxhIGNhaXNzZSA/XG4gICAgICAgICAgICBjb25zdCBhYm85PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvOVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGFibzE4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvMThcIik7XG4gICAgICAgICAgICBjb25zdCBhYm8zNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzM2XCIpO1xuICAgICAgICAgICAgY29uc3QgYWJvNTQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm81NFwiKTtcbiAgICAgICAgICAgIGNvbnN0IENHVj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkNHVk9rXCIpO1xuICAgICAgICAgICAgY29uc3QgZGl2V1BCdG5zPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG5zXCIpO1xuICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICBhYm85LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvOVwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvMTguYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm8xOFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvMzYuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm8zNlwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvNTQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm81NFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgQ0dWLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihDR1YuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmKGFibzkuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnRuUGF5bWVudChcImJ0bjlcIik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoYWJvMTguY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnRuUGF5bWVudChcImJ0bjE4XCIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGFibzM2LmNoZWNrZWQ9PT10cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG4zNlwiKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihhYm81NC5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuNTRcIik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBDR1YuY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIExpc3RlIGRlcyBmaWxsZXVscywgc2kgaWwgeSBlbiBhXG4gICAgICAgICAgICBjb25zdCB4aHJHZXRHb2RjaGlsZHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhockdldEdvZGNoaWxkcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldEdvZENoaWxkcyk7XG4gICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KSwgdHh0R29kY2hpbGRzPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYkdvZGNoaWxkcz1yZXNwb25zZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihuYkdvZGNoaWxkcz09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0R29kY2hpbGRzPWluZm9zVXNlck5vR29kY2hpbGRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEdvZGNoaWxkcz1pbmZvc1VzZXJOYkdvZENoaWxkcy5yZXBsYWNlKFwiI05CXCIsIG5iR29kY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEdvZGNoaWxkcys9cmVzcG9uc2VbaV0ubmFtZStcIiAoXCIrcmVzcG9uc2VbaV0uZW1haWwrXCIpIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2R29kY2hpbGRzLCBcInBcIiwgdHh0R29kY2hpbGRzLCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgeGhyR2V0R29kY2hpbGRzLnNlbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZDcmFzaCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgPSAoaW5wdXRzQ29uZiwgbXlGb3JtKSA9Plxue1xuICAgIGZvcihsZXQgaSBpbiBteUZvcm0uZWxlbWVudHMpXG4gICAge1xuICAgICAgICBpZighaXNFbXB0eShteUZvcm0uZWxlbWVudHNbaV0uaWQpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgaWRJbnB1dD1teUZvcm0uZWxlbWVudHNbaV0uaWQ7XG4gICAgICAgICAgICBpZihpbnB1dHNDb25mW2lkSW5wdXRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBpbnB1dEhUTUw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIGluIGlucHV0c0NvbmZbaWRJbnB1dF0pXG4gICAgICAgICAgICAgICAgICAgIGlucHV0SFRNTC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBpbnB1dHNDb25mW2lkSW5wdXRdW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vLyBSw6ljdXDDqHJlIHRvdXRlcyBsZXMgdmFsZXVycyBkZSBjaGFtcHMgZW4gb21ldHRhbnQgbGVzIGNoZWNrYm94IG5vbiBjb2Now6llcywgZXRjLlxuZXhwb3J0IGNvbnN0IGdldERhdGFzRnJvbUlucHV0cyA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZGF0YXM9e307XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgZGF0YXNbZW50cmllWzBdXT1lbnRyaWVbMV07XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBWaWRlIHRvdXMgbGVzIGNoYW1wcyBkJ3VuIGZvcm11bGFpcmUsIHkgY29tcHJpcyBoaWRkZW4sIGNoZWNrYm94LCBldGMuXG4vLyBSZXZvaXIgcG91ciBsZXMgc2VsZWN0XG5leHBvcnQgY29uc3QgZW1weUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgIHtcbiAgICAgICAgaWYobXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJjaGVja2JveFwiIHx8IG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwicmFkaW9cIilcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnZhbHVlPVwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8gVmlkZSBldCBjYWNoZSBsZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgZW1weUFuZEhpZGVGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBlbXB5Rm9ybShteUZvcm0pO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSIsImNvbnN0IGNoZWNrQm94ZXM9XG57XG4gICAgXCJDR1ZcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiQ0dWT2tcIiksXG4gICAgXCJhYm8xXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzFcIiksXG4gICAgXCJhYm8yXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzJcIiksXG4gICAgXCJhYm8zXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzNcIiksXG4gICAgXCJhYm80XCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzRcIilcbn1cbmNvbnN0IGRpdldQQnRucz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuc1wiKTtcblxuLy8gTG9yc3F1ZSBsJ29uIHPDqWxlY3Rpb25uZSB1biBtb250YW50LCBsZXMgYXV0cmVzIG9wdGlvbnMgKyBsZXMgQ0dWIHNvbnQgZMOpc8OpbGVjdGlvbm7DqXNcbmV4cG9ydCBjb25zdCB1bkNoZWNrQWxsT3RoZXJzID0gKGNob2ljZSkgPT5cbntcbiAgICBmb3IgKGxldCBpZCBpbiBjaGVja0JveGVzKVxuICAgIHtcbiAgICAgICAgaWYoaWQhPT1jaG9pY2UpXG4gICAgICAgICAgICBjaGVja0JveGVzW2lkXS5jaGVja2VkPWZhbHNlO1xuICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICB9XG59XG5cblxuY29uc3QgYnRucz1cbntcbiAgICBcImJ0bjFcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG4xXCIpLFxuICAgIFwiYnRuMlwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bjJcIiksXG4gICAgXCJidG4zXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuM1wiKSxcbiAgICBcImJ0bjRcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG40XCIpXG59XG5cbi8vIEFmZmljaGUgbGUgYm9uIGJvdXRvbiBkZSBwYWllbWVudCBldCBjYWNoZSBsZXMgYXV0cmVzXG5leHBvcnQgY29uc3Qgc2hvd0J0blBheW1lbnQgPSAoY2hvaWNlKSA9Plxue1xuICAgIGZvciAobGV0IGlkIGluIGJ0bnMpXG4gICAge1xuICAgICAgICBpZihpZCE9PWNob2ljZSlcbiAgICAgICAgICAgIGJ0bnNbaWRdLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0bnNbaWRdLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgIH1cbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC91c2VyJCIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9nZW5lcmFsLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3N1YnNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci91c2VyLmpzIiwid2VicGFjazovLy8uLi90b29scy9tYWluLmpzIiwid2VicGFjazovLy8uLi92aWV3cyBzeW5jIF5cXC5cXC8uKlxcLmpzJCIsIndlYnBhY2s6Ly8vLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FjY291bnRVc2VyLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvd2VicG9ydGFnZS5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZE1pbkxlbmd0aCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQiLCJpbmZvc0V4cGlyYXRlZCIsImluZm9zRXhwaXJhdGVkQWRtaW4iLCJpbmZvc05iRGF5cyIsImluZm9zTmJEYXlzQWRtaW4iLCJpbmZvc1BheW1lbnRzQWRtaW4iLCJpc05vdFZhbGlkZWQiLCJtYWlsRW5kRnJlZVRpbWVCb2R5SFRNTCIsIm1haWxFbmRGcmVlVGltZUJvZHlUeHQiLCJtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IiwibWFpbEVuZEZyZWVUaW1lTWVzc2FnZSIsIm1haWxFbmRGcmVlVGltZVN1YmplY3QiLCJtYWlsRXhwaXJhdGlvbkJvZHlIVE1MIiwibWFpbEV4cGlyYXRpb25Cb2R5VHh0IiwibWFpbEV4cGlyYXRpb25MaW5rVHh0IiwibWFpbEV4cGlyYXRpb25NZXNzYWdlIiwibWFpbEV4cGlyYXRpb25SZWxhdW5jaFR4dCIsIm1haWxFeHBpcmF0aW9uU3ViamVjdCIsIm1haWxOZXdFbGVtZW50Rm9yR3JvdXBUeHQiLCJtYWlsTmV3UXVlc3Rpb25uYWlyZUJvZHlUeHQiLCJtYWlsU3RvcE1haWxMaW5rVHh0IiwibmVlZEtub3dJZk5vdGljZU9rIiwibmVlZEludGVnZXJOdW1iZXJPZkRheXMiLCJuZWVkTWluTnVtYmVyT2ZEYXlzIiwibmVlZE5vdFRvb0xvbmdEYXlzTGlzdCIsIm5lZWROdW1iZXJPZkRheXMiLCJuZWVkVW5pcXVlRGF5c0xpc3QiLCJuZWVkVmFsaWREYXlzTGlzdCIsIm5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIiLCJ1bnN1YnNjcmlwdGlvbk9rIiwidW5zdWJzY3JpcHRpb25GYWlsIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImNvbmZpZ1VzZXJzIiwiZGl2Q3Jhc2giLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGl2TWFpbiIsImRpdk1lc3NhZ2UiLCJkaXZSZXNwb25zZSIsImRpdkdvZGZhdGhlckluZm9zIiwiZGl2R29kY2hpbGRzIiwiZGl2U3Vic2NyaWJlSW5mb3MiLCJkaXZTdWJzY3JpYmVJbnRybyIsImZvcm1BY2NvdW50Iiwic2hvd0dGRW1haWwiLCJzaG93R0ZDb2RlIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJtZXNzYWdlIiwiY29sb3IiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0eWxlIiwiZGlzcGxheSIsImhhc2giLCJhc3NpZ24iLCJnZXRMb2NhbHkiLCJhZGRFbGVtZW50IiwicmVtb3ZlTG9jYWx5IiwidXNlciIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiZ2V0SW5mb3MiLCJ4aHJHZXRJbmZvcyIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJVc2VyIiwiU3Vic2NyaXB0aW9uIiwiZGF0YSIsImVsZW1lbnRzIiwiY2hlY2tlZCIsInJlY2VpcHREYXlzIiwiaW5uZXJIVE1MIiwiYmVnaW5TdWJUUyIsImNyZWF0ZWRBdCIsImdldFRpbWUiLCJudW1iZXJPZkRheXMiLCJuYkRheXNPayIsInJvdW5kIiwibm93Iiwic2V0UmVxdWVzdEhlYWRlciIsInRva2VuIiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwicHJldmVudERlZmF1bHQiLCJkYXRhcyIsImdldERhdGFzRnJvbUlucHV0cyIsInRpbWVEaWZmZXJlbmNlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ4aHJVc2VyVXBkYXRlIiwiZGVsZXRlT2siLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvcnMiLCJvdXRwdXQiLCJzdHJpbmdpZnkiLCJhYm85IiwiYWJvMTgiLCJhYm8zNiIsImFibzU0IiwiQ0dWIiwiZGl2V1BCdG5zIiwidW5DaGVja0FsbE90aGVycyIsInNob3dCdG5QYXltZW50IiwieGhyR2V0R29kY2hpbGRzIiwidHh0R29kY2hpbGRzIiwibmJHb2RjaGlsZHMiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsImVtcHlGb3JtIiwidHlwZSIsImVtcHlBbmRIaWRlRm9ybSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsInhociIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiLCJjaGVja0JveGVzIiwiY2hvaWNlIiwiYnRucyJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7O0FDbEZBLE1BQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURBQUQsQ0FBOUI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0lDLFFBQU0sRUFBRSwyQkFEWjtBQUVJQyxTQUFPLEVBQUUsdUJBRmI7QUFHSUMsV0FBUyxFQUFFLFNBSGY7QUFJSUMsWUFBVSxFQUFFLG1CQUpoQjtBQUtJQyxZQUFVLEVBQUUsbUJBTGhCO0FBTUlDLGFBQVcsRUFBRSx1QkFOakI7QUFPSUMsV0FBUyxFQUFFLElBUGY7QUFRSUMsT0FBSyxFQUFFLFdBUlg7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TyxNQUFNK0UsY0FBYyxHQUFJc0UsTUFBRCxJQUM5QjtBQUNJLE9BQUssSUFBSTNNLEVBQVQsSUFBZTRNLElBQWYsRUFDQTtBQUNJLFFBQUc1TSxFQUFFLEtBQUcyTSxNQUFSLEVBQ0lDLElBQUksQ0FBQzVNLEVBQUQsQ0FBSixDQUFTeUUsS0FBVCxDQUFlQyxPQUFmLEdBQXVCLE1BQXZCLENBREosS0FHSWtJLElBQUksQ0FBQzVNLEVBQUQsQ0FBSixDQUFTeUUsS0FBVCxDQUFlQyxPQUFmLEdBQXVCLE9BQXZCO0FBQ1A7QUFDSixDQVRNLEMiLCJmaWxlIjoiLi9KUy9hY2NvdW50VXNlci5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9hY2NvdW50VXNlci5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvc3Vic2NyaXB0aW9uXCI6IFwiLi4vbGFuZy9mci9zdWJzY3JpcHRpb24uanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9zdWJzY3JpcHRpb24kXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQgOiBcIlRvdXMgbGVzIGFib25uw6lzIG9udCDDqXTDqSB0cmFpdMOpcyBwb3VyIGxlIG1vbWVudC5cIixcbiAgICBpbmZvc0V4cGlyYXRlZDogXCJWb3RyZSBhYm9ubmVtZW50IGEgZXhwaXLDqSwgbWFpcyBpbCB2b3VzIHJlc3RlIGVuY29yZSBxdWVscXVlcyBqb3VycyBhdmFudCBxdWUgdm90cmUgY29tcHRlIGV0IHZvcyBkb25uw6llcyBuZSBzb2llbnQgY29tcGzDqHRlbWVudCBzdXBwcmltw6llcy48YnI+UG91ciBjZSBmYWlyZSwgc3VpdmV6IHNhbnMgdGFyZGVyIGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc0V4cGlyYXRlZEFkbWluOiBcIkNldCBhYm9ubmVtZW50IGEgZXhwaXLDqS5cIixcbiAgICBpbmZvc05iRGF5czogXCJWb3RyZSBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+Ljxicj5Wb3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCBwcm9sb25nZXIgdm90cmUgYWJvbm5lbWVudCBlbiBzdWl2YW50IGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc05iRGF5c0FkbWluOiBcIkNldCBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+LlwiLFxuICAgIGluZm9zUGF5bWVudHNBZG1pbiA6IFwiREFURV9QQVlNRU5UIDogcGFpZW1lbnQgZGUgQU1PVU5UIOKCrCBhdSBub20gZGUgQ0xJRU5UX05BTUUuXCIsXG4gICAgaXNOb3RWYWxpZGVkIDogXCJDZXQgdXRpbGlzYXRldXIgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLjxicj5Wb3VzIHBvdXZleiBsZSBmYWlyZSDDoCBzYSBwbGFjZSA8YSBocmVmPScjdmFsaWRhdGlvbk9rJz5lbiBjb2NoYW50IGxhIGNhc2UgaW5kaXF1w6llPC9hPiBldCBlbnJlZ2lzdHJhbnQuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keUhUTUw6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgc2FucyB0YXJkZXIgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy48L3A+XCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IGdyYXR1aXQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuXFxuXFxuUG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc2FucyBhdHRlbmRyZSBzb3VzY3JpcmUgw6AgdW4gYWJvbm5lbWVudCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IDogXCJNJ2Fib25uZXIuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTWVzc2FnZTogXCIgcmVsYW5jZXMgZW52b3nDqWVzLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZVN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IHZhIGV4cGlyZXJcIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuPGJyPjxicj5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFeHBpcmF0aW9uQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIFNJVEVfTkFNRSwgdm91cyBwb3V2ZXogbGUgcHJvbG9uZ2VyIGTDqHMgYXVqb3VyZCdodWkgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEV4cGlyYXRpb25MaW5rVHh0IDogXCJQcm9sb25nZXIgbW9uIGFib25uZW1lbnQuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25NZXNzYWdlOiBcIkZJUlNUIHByZW1pw6hyZXMgZXQgU0VDT05EIGRldXhpw6htZXMgcmVsYW5jZXMgZW52b3nDqWVzIHBvdXIgZGVzIGFib25uZW1lbnRzIGV4cGlyYW50IGQnaWNpIHBldS5cIixcbiAgICBtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0OiBcIltSYXBwZWxdIFwiLFxuICAgIG1haWxFeHBpcmF0aW9uU3ViamVjdDogXCJWb3RyZSBhYm9ubmVtZW50IHZhIGJpZW50w7R0IGV4cGlyZXJcIixcbiAgICBtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb2ljaSBsZSBsaWVuIHZlcnMgbGUgbm91dmVsIGFydGljbGUgw6AgbGlyZSA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlYXUgcXVpeiA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxTdG9wTWFpbExpbmtUeHQgOiBcIlN0b3BwZXIgbGVzIGVudm9pcy5cIixcbiAgICBuZWVkS25vd0lmTm90aWNlT2sgOiBcIklsIG1hbnF1ZSBsJ2luZm9ybWF0aW9uIHN1ciBsJ2FjY2VwdGF0aW9uIG91IG5vbiBkZSByZWNldm9pciBkZXMgbm90aWZpY2F0aW9ucy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIuXCIsXG4gICAgbmVlZE1pbk51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmICFcIixcbiAgICBuZWVkTm90VG9vTG9uZ0RheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQgKHRyb3AgbG9uZ3VlKS5cIixcbiAgICBuZWVkTnVtYmVyT2ZEYXlzIDogXCJJbCBmYXV0IHVuIG5vbWJyZSBkZSBqb3VycyBwb3VyIGwnYWJvbm5lbWVudC5cIixcbiAgICBuZWVkVW5pcXVlRGF5c0xpc3QgOiBcIkxhIGxpc3RlIGRlIGpvdXJzIHPDqWxlY3Rpb25uw6lzIG4nYSBwYXMgbGUgYm9uIGZvcm1hdC4gRG91YmxvbiA6IFwiLFxuICAgIG5lZWRWYWxpZERheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIENhcmFjdMOocmUgbm9uIHZhbGlkZSA6IFwiLFxuICAgIG5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIgOiBcIkF1Y3VuIG5vdXZlYXUgcXVlc3Rpb25uYWlyZSB0cm91dsOpIHBvdXIgdW4gYWJvbm7DqSA6IFwiLFxuICAgIHVuc3Vic2NyaXB0aW9uT2sgOiBcIlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIHByaXNlIGVuIGNvbXB0ZS4gVm91cyBuZSByZWNldnJleiBwbHVzIGRlIG1lc3NhZ2VzIHZlbmFudCBkdSBzaXRlLCBzYXVmIHBvdXIgdm91cyBzaWduYWxlciBsYSBmaW4gZGUgdm90cmUgYWJvbm5lbWVudC48YnI+Tidow6lzaXRleiBwYXMgPGEgaHJlZj0nLyNVUkwnPsOgIGFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkZSBub3V2ZWF1IGF1dG9yaXNlciBjZXJ0YWlucyBlbnZvaXMuXCIsXG4gICAgdW5zdWJzY3JpcHRpb25GYWlsIDogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBsaWVuIGRlIGTDqXNhYm9ubmVtZW50IG5lIGZvbmN0aW9ubmUgcGFzLjxicj5Wb3VzIHBvdXZleiA8YSBocmVmPScvI1VSTCc+YWNjw6lkZXIgw6Agdm90cmUgY29tcHRlPC9hPiBwb3VyIGTDqXNhY3RpdmVyIGxlcyBlbnZvaXMgbWFudWVsbGVtZW50LlwiXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBERVMgRk9STVVMQUlSRVMgUEVSTUVUVEFOVCBBVVggVVRJTElTQVRFVVJTIERFIE1FVFRSRSDDgCBKT1VSIExFVVJTIElORk9STUFUSU9OUyArIExFVVIgQUJPTk5FTUVOVFxuXG4vLy8gVsOpcmlmaWVyIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlciB2ZXJzIGxlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbiBzaSBjZSBuJ2VzdCBwYXMgbGUgY2FzLlxuLy8vIFNpIGMnZXN0IG9rLCBvbiByw6ljdXDDqHJlIGxlcyBpbmZvcyBkZSBzb24gY29tcHRlIGV0IHNvbiBhYm9ubmVtZW50IGV0IGxlcyBhZmZpY2hlIGRhbnMgbGUgZm9ybXVsYWlyZS5cbi8vLyBVbmUgaW5mb3JtYXRpb24gZXN0IGFmZmljaMOpZSBjb25jZXJuYW50IGxhIHBvc3NpYmlsaXTDqSBkZSBwYXJyYWluYWdlIGV0IGxpc3RlIGxlcyBmaWxsZXVscyBleGlzdGFudHMuXG4vLy8gVW4gbWVudSBwZXJtZXQgw6AgbCd1dGlsaXNhdGV1ciBkJ2FjY8OpZGVyIMOgIGxhIG1vZGlmaWNhdGlvbiBkZSBzZXMgaW5mb3MsIGV0Yy5cbi8vLyBEZXMgYm91dG9ucyBkZSBwYWllbWVudCBzb250IGF1c3NpIGFmZmljaMOpcyBzdWl2YW50IGxlIGNob2l4IGRlIGwndXRpbGlzYXRldXIgcG91ciBsdWkgcGVybWV0dHJlIGRlIHByb2xvbmdlciBzb24gYWJvbm5lbWVudC5cbi8vLyBVbiBtZXNzYWdlIHZlbmFudCBkJ3VuZSBhdXRyZSBwYWdlIHBldXQgYXVzc2kgw6p0cmUgw6AgYWZmaWNoZXIgbG9ycyBkdSBwcmVtaWVyIGNoYXJnZW1lbnQuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpOy8vIGJlc29pbiBkZSB0b3V0ZXMgbGVzIGTDqWNsYXJhdGlvbnMgcG91ciBsYSBmb25jdGlvbiA6IHVwZGF0ZUFjY291bnRMaW5rKClcbmNvbnN0IHsgYmVnaW5Db2RlR29kZmF0aGVyIH0gPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL2luc3RhbmNlXCIpO1xuY29uc3QgY29uZmlnVXNlcnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpOyAvLyBiZXNvaW4gZGUgdG91cyBsZSBmaWNoaWVyIHBvdXIgY29uZmlndXJlciBsZSBmb3JtdWxhaXJlXG5cbi8vIEZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBnZXRDb25maWcsIGdldFRpbWVEaWZmZXJlbmNlIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gU3DDqWNpZmlxdWUgV2ViUG9ydGFnZSBwb3VyIHBhaWVtZW50czpcbmltcG9ydCB7IHNob3dCdG5QYXltZW50LCB1bkNoZWNrQWxsT3RoZXJzIH0gZnJvbSBcIi4vdG9vbHMvd2VicG9ydGFnZS5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgaW5mb3NVc2VyTmJHb2RDaGlsZHMsIGluZm9zVXNlck5vR29kY2hpbGRzLCBuZWVkQmVDb25uZWN0ZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcbmNvbnN0IHsgaW5mb3NFeHBpcmF0ZWQsIGluZm9zTmJEYXlzIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3N1YnNjcmlwdGlvblwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGRpdkNyYXNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdk1haW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1haW4tY29udGVudFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBkaXZHb2RmYXRoZXJJbmZvcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ29kZmF0aGVySW5mb3NcIik7XG5jb25zdCBkaXZHb2RjaGlsZHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvZGNoaWxkc1wiKTtcbmNvbnN0IGRpdlN1YnNjcmliZUluZm9zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpYmVJbmZvc1wiKTtcbmNvbnN0IGRpdlN1YnNjcmliZUludHJvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpYmVJbnRyb1wiKTtcbmNvbnN0IGZvcm1BY2NvdW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50VXBkYXRlXCIpO1xuY29uc3QgbmV3UGFzc3dvcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld1Bhc3N3b3JkXCIpO1xuY29uc3Qgc2hvd0dGRW1haWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvZGZhdGhlckVtYWlsXCIpO1xuY29uc3Qgc2hvd0dGQ29kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ29kZmF0aGVyQ29kZVwiKTtcblxuaGVsbG9EZXYoKTtcblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIG4nZXN0IHBhcyBjb25uZWN0w6kgYXZlYyBsZSBib24gc3RhdHV0LCBwYXMgbGEgcGVpbmUgZCdhbGxlciArIGxvaW4gOlxuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1widXNlclwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbmVlZEJlQ29ubmVjdGVkLCBjb2xvcjpcImVycm9yXCIgfSwgd2luZG93LmxvY2F0aW9uKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAvLyBsJ8OpdmVudHVlbGxlIGFuY3JlIGVzdCBpZ25vcsOpZSwgY2FyIGFic2VudGUgZHUgRE9NIGF2YW50IGQnYXZvaXIgdsOpcmlmacOpIGxhIGNvbm5leGlvblxuICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhhc2ghPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih3aW5kb3cubG9jYXRpb24uaGFzaCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGdldExvY2FseShcIm1lc3NhZ2VcIikpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIGdldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkubWVzc2FnZSwgXCJcIiwgW2dldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkuY29sb3JdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwibWVzc2FnZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNlIGxlIGZvcm11bGFpcmUgcGVybWV0dGFudCBkZSBtZXR0cmUgw6Agam91ciBsZXMgaW5mb3MgOlxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBmb3JtQWNjb3VudCk7XG4gICAgICAgICAgICAvLyBDZXJ0YWlucyBuYXZpZ2F0ZXVycyByZW1wbGlzc2VudCBsZXMgY2hhbXBzIHBhc3N3b3JkIDpcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkLnZhbHVlPVwiXCI7XG5cbiAgICAgICAgICAgIC8vIEZvbmN0aW9uIGFmZmljaGFudCBsZXMgaW5mb3MgY29ubnVlcyBhdSBwcmVtaWVyIGFmZmljaGFnZSwgcHVpcyBhcHLDqHMgZW52b2kgbWlzZSDDoCBqb3VyXG4gICAgICAgICAgICBjb25zdCBnZXRJbmZvcyA9ICgpID0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyR2V0SW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHJHZXRJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldFVzZXJJbmZvcyt1c2VyLmlkKTtcbiAgICAgICAgICAgICAgICB4aHJHZXRJbmZvcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLlVzZXIgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLlN1YnNjcmlwdGlvbiAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLlVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmb3JtQWNjb3VudC5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuVXNlcltkYXRhXSE9PXRydWUgJiYgcmVzcG9uc2UuVXNlcltkYXRhXSE9PWZhbHNlKS8vIGJvb2zDqWVuID0gY2FzZSDDoCBjb2NoZXIgIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1BY2NvdW50LmVsZW1lbnRzW2RhdGFdLnZhbHVlPXJlc3BvbnNlLlVzZXJbZGF0YV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5Vc2VyW2RhdGFdPT10cnVlKSAvLyBzaSBmYWxzZSwgb24gbmUgZmFpdCByaWVuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1BY2NvdW50LmVsZW1lbnRzW1wiXCIrZGF0YV0uY2hlY2tlZD1cImNoZWNrZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqb3VycyBkZSByw6ljZXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbXCJkXCIrcmVzcG9uc2UuU3Vic2NyaXB0aW9uLnJlY2VpcHREYXlzW2ldXS5jaGVja2VkPVwiY2hlY2tlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwiY29kZXNcIiBwb3NzaWJsZXMgw6AgdHJhbnNtZXR0cmUgcG91ciBwYXJyYWluZXIgZCdhdXRyZXMgdXRpbGlzYXRldXJzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dHRkVtYWlsLmlubmVySFRNTD1yZXNwb25zZS5Vc2VyLmVtYWlsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dHRkNvZGUuaW5uZXJIVE1MPWJlZ2luQ29kZUdvZGZhdGhlcityZXNwb25zZS5Vc2VyLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVnaW5TdWJUUz1uZXcgRGF0ZShyZXNwb25zZS5TdWJzY3JpcHRpb24uY3JlYXRlZEF0KS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5TdWJzY3JpcHRpb24ubnVtYmVyT2ZEYXlzICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdkdvZGZhdGhlckluZm9zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlN1YnNjcmliZUluZm9zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5iRGF5c09rPXJlc3BvbnNlLlN1YnNjcmlwdGlvbi5udW1iZXJPZkRheXMtTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1iZWdpblN1YlRTKS8xMDAwLzM2MDAvMjQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5iRGF5c09rID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTdWJzY3JpYmVJbnRybywgXCJwXCIsIGluZm9zTmJEYXlzLnJlcGxhY2UoXCJOQl9EQVlTXCIsIG5iRGF5c09rKSwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTdWJzY3JpYmVJbnRybywgXCJwXCIsIGluZm9zRXhwaXJhdGVkLnJlcGxhY2UoXCJOQl9EQVlTXCIsIG5iRGF5c09rKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3N1YnNjcmliZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb250ZSBsZXMgaW5mb3MgZMOpasOgIGVucmVnaXN0csOpZXMgOlxuICAgICAgICAgICAgZ2V0SW5mb3MoKTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFRyYWl0ZW1lbnQgZGUgbCdlbnZvaSBkJ3VuZSBtaXNlIMOgIGpvdXIgZGVzIGluZm9zXG4gICAgICAgICAgICBmb3JtQWNjb3VudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybUFjY291bnQpO1xuICAgICAgICAgICAgICAgIC8vIHJlY29tcG9zaXRpb24gZGVzIGpvdXJzIHZhbGFibGVzIHBvdXIgbCdhYm9ubmVtZW50IDpcbiAgICAgICAgICAgICAgICBkYXRhcy5yZWNlaXB0RGF5cz1cIlwiO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaT0xOyBpPD03OyBpKyspXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihkYXRhc1tcImRcIitpXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnJlY2VpcHREYXlzKz1cIlwiK2k7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGFzLnRpbWVEaWZmZXJlbmNlPWdldFRpbWVEaWZmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyVXNlclVwZGF0ZSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyVXBkYXRlLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrXCIvXCIrdXNlci5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyVXBkYXRlLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMudXBkYXRlVXNlckluZm9zK3VzZXIuaWQpO1xuICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5tZXNzYWdlIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkYW5zIHRvdXMgbGVzIGNhcywgamUgbWV0cyDDoCBqb3VyIGxlIGNvbnRlbnUgZHUgZm9ybXVsYWlyZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbmZvcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFzLm91dHB1dD1cImh0bWxcIjtcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG9uIHBhc3NlIMOgIGxhIGNhaXNzZSA/XG4gICAgICAgICAgICBjb25zdCBhYm85PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvOVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGFibzE4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvMThcIik7XG4gICAgICAgICAgICBjb25zdCBhYm8zNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzM2XCIpO1xuICAgICAgICAgICAgY29uc3QgYWJvNTQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm81NFwiKTtcbiAgICAgICAgICAgIGNvbnN0IENHVj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkNHVk9rXCIpO1xuICAgICAgICAgICAgY29uc3QgZGl2V1BCdG5zPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG5zXCIpO1xuICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICBhYm85LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvOVwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvMTguYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm8xOFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvMzYuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm8zNlwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYWJvNTQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVuQ2hlY2tBbGxPdGhlcnMoXCJhYm81NFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgQ0dWLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihDR1YuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmKGFibzkuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnRuUGF5bWVudChcImJ0bjlcIik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoYWJvMTguY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnRuUGF5bWVudChcImJ0bjE4XCIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGFibzM2LmNoZWNrZWQ9PT10cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG4zNlwiKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihhYm81NC5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuNTRcIik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBDR1YuY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIExpc3RlIGRlcyBmaWxsZXVscywgc2kgaWwgeSBlbiBhXG4gICAgICAgICAgICBjb25zdCB4aHJHZXRHb2RjaGlsZHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhockdldEdvZGNoaWxkcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldEdvZENoaWxkcyk7XG4gICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KSwgdHh0R29kY2hpbGRzPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYkdvZGNoaWxkcz1yZXNwb25zZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihuYkdvZGNoaWxkcz09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0R29kY2hpbGRzPWluZm9zVXNlck5vR29kY2hpbGRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEdvZGNoaWxkcz1pbmZvc1VzZXJOYkdvZENoaWxkcy5yZXBsYWNlKFwiI05CXCIsIG5iR29kY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEdvZGNoaWxkcys9cmVzcG9uc2VbaV0ubmFtZStcIiAoXCIrcmVzcG9uc2VbaV0uZW1haWwrXCIpIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2R29kY2hpbGRzLCBcInBcIiwgdHh0R29kY2hpbGRzLCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgeGhyR2V0R29kY2hpbGRzLnNlbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZDcmFzaCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgPSAoaW5wdXRzQ29uZiwgbXlGb3JtKSA9Plxue1xuICAgIGZvcihsZXQgaSBpbiBteUZvcm0uZWxlbWVudHMpXG4gICAge1xuICAgICAgICBpZighaXNFbXB0eShteUZvcm0uZWxlbWVudHNbaV0uaWQpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgaWRJbnB1dD1teUZvcm0uZWxlbWVudHNbaV0uaWQ7XG4gICAgICAgICAgICBpZihpbnB1dHNDb25mW2lkSW5wdXRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBpbnB1dEhUTUw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIGluIGlucHV0c0NvbmZbaWRJbnB1dF0pXG4gICAgICAgICAgICAgICAgICAgIGlucHV0SFRNTC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBpbnB1dHNDb25mW2lkSW5wdXRdW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vLyBSw6ljdXDDqHJlIHRvdXRlcyBsZXMgdmFsZXVycyBkZSBjaGFtcHMgZW4gb21ldHRhbnQgbGVzIGNoZWNrYm94IG5vbiBjb2Now6llcywgZXRjLlxuZXhwb3J0IGNvbnN0IGdldERhdGFzRnJvbUlucHV0cyA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZGF0YXM9e307XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgZGF0YXNbZW50cmllWzBdXT1lbnRyaWVbMV07XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBWaWRlIHRvdXMgbGVzIGNoYW1wcyBkJ3VuIGZvcm11bGFpcmUsIHkgY29tcHJpcyBoaWRkZW4sIGNoZWNrYm94LCBldGMuXG4vLyBSZXZvaXIgcG91ciBsZXMgc2VsZWN0XG5leHBvcnQgY29uc3QgZW1weUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgIHtcbiAgICAgICAgaWYobXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJjaGVja2JveFwiIHx8IG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwicmFkaW9cIilcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnZhbHVlPVwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8gVmlkZSBldCBjYWNoZSBsZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgZW1weUFuZEhpZGVGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBlbXB5Rm9ybShteUZvcm0pO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSIsImNvbnN0IGNoZWNrQm94ZXM9XG57XG4gICAgXCJDR1ZcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiQ0dWT2tcIiksXG4gICAgXCJhYm8xXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzFcIiksXG4gICAgXCJhYm8yXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzJcIiksXG4gICAgXCJhYm8zXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzNcIiksXG4gICAgXCJhYm80XCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzRcIilcbn1cbmNvbnN0IGRpdldQQnRucz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuc1wiKTtcblxuLy8gTG9yc3F1ZSBsJ29uIHPDqWxlY3Rpb25uZSB1biBtb250YW50LCBsZXMgYXV0cmVzIG9wdGlvbnMgKyBsZXMgQ0dWIHNvbnQgZMOpc8OpbGVjdGlvbm7DqXNcbmV4cG9ydCBjb25zdCB1bkNoZWNrQWxsT3RoZXJzID0gKGNob2ljZSkgPT5cbntcbiAgICBmb3IgKGxldCBpZCBpbiBjaGVja0JveGVzKVxuICAgIHtcbiAgICAgICAgaWYoaWQhPT1jaG9pY2UpXG4gICAgICAgICAgICBjaGVja0JveGVzW2lkXS5jaGVja2VkPWZhbHNlO1xuICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICB9XG59XG5cblxuY29uc3QgYnRucz1cbntcbiAgICBcImJ0bjFcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG4xXCIpLFxuICAgIFwiYnRuMlwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bjJcIiksXG4gICAgXCJidG4zXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuM1wiKSxcbiAgICBcImJ0bjRcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG40XCIpXG59XG5cbi8vIEFmZmljaGUgbGUgYm9uIGJvdXRvbiBkZSBwYWllbWVudCBldCBjYWNoZSBsZXMgYXV0cmVzXG5leHBvcnQgY29uc3Qgc2hvd0J0blBheW1lbnQgPSAoY2hvaWNlKSA9Plxue1xuICAgIGZvciAobGV0IGlkIGluIGJ0bnMpXG4gICAge1xuICAgICAgICBpZihpZCE9PWNob2ljZSlcbiAgICAgICAgICAgIGJ0bnNbaWRdLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0bnNbaWRdLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgIH1cbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/front/public/JS/connection.app.js b/front/public/JS/connection.app.js index e720260..3d5f7f6 100644 --- a/front/public/JS/connection.app.js +++ b/front/public/JS/connection.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -605,99 +614,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1446,4 +1434,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb25uZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJtYXRvbW8iLCJ1cmwiLCJzaXRlSWQiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJteVN0cmluZyIsImlzRW1wdHkiLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1RlbXBsYXRlIiwibXlGb3JtIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdk1lc3NhZ2UiLCJkaXZSZXNwb25zZSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwic2F2ZUxvY2FseSIsIm1lc3NhZ2UiLCJjb2xvciIsInVzZXIiLCJnZXRMb2NhbHkiLCJob21lUGFnZSIsInN0YXR1cyIsIndpbmRvdyIsImxvY2F0aW9uIiwiYXNzaWduIiwibG9hZE1hdG9tbyIsInN0eWxlIiwiZGlzcGxheSIsImFkZEVsZW1lbnQiLCJyZW1vdmVMb2NhbHkiLCJlIiwiY29uc29sZSIsImVycm9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsInByZXZlbnREZWZhdWx0IiwiaW5uZXJIVE1MIiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJnZXRMb2dpbkxpbmsiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwidXNlcklkIiwiY29ubmV4aW9uVGltZSIsInRva2VuIiwiY29ubmV4aW9uTWF4VGltZSIsIm5vdyIsImVuZHNXaXRoIiwicGFyc2VJbnQiLCJzZXRTZXNzaW9uIiwiaW5kZXhPZiIsImVycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsInNldFJlcXVlc3RIZWFkZXIiLCJ0aW1lRGlmZmVyZW5jZSIsImdldFRpbWVEaWZmZXJlbmNlIiwiY2hlY2tBbnN3ZXJEYXRhcyIsInNlbmQiLCJzdHJpbmdpZnkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwidXBkYXRlQWNjb3VudExpbmsiLCJsaW5rIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJ0eXBlIiwiY2hlY2tlZCIsImVtcHlBbmRIaWRlRm9ybSIsIl9wYXEiLCJwdXNoIiwic2VsZiIsImdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQiLCJub3dUcyIsInJvdW5kIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsInMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImFzeW5jIiwic3JjIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0IiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJvbmVycm9yIiwi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T0FBakIsRUFBMEJ5SCxTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQzFOLDJEQUFPLENBQUNpRyxPQUFELENBQVgsRUFDSUQsb0VBQVUsQ0FBQyxTQUFELEVBQVlDLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ2pHLDJEQUFPLENBQUMwTixTQUFELENBQVgsRUFDSTFILG9FQUFVLENBQUMsS0FBRCxFQUFRMEgsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDMU4sMkRBQU8sQ0FBQ3lOLGNBQUQsQ0FBWCxFQUNJbEgsTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxNQUFoQixDQUF1QmdILGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvY29ubmVjdGlvbi5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9jb25uZWN0aW9uLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIERFIFNFIENPTk5FQ1RFUlxuXG4vLy8gTCd1dGlsaXNhdGV1ciBwZXV0IGF2b2lyIHLDqXBvbmR1IMOgIHVuIHF1aXogYXZhbnQgZCdhcnJpdmVyIHN1ciBsYSBwYWdlIGRlIGNvbm5leGlvbi5cbi8vLyBEYW5zIGNlIGNhcyBpbCBmYXV0IGVucmVnaXN0cmVyIHNvbiByw6lzdWx0YXQgZW4gbcOqbWUgdGVtcHMsIHVuZSBmb2lzIGxhIGNvbm5leGlvbiB2YWxpZMOpZS5cblxuLy8vIExlIGNvbm5leGlvbiBwZXV0IHNlIGZhaXJlIGRpcmVjdGVtZW50IGljaSB2aWEgbGEgc2Fpc2llIGQndW4gbW90IGRlIHBhc3NlIG91IHZpYSBsJ2Vudm9pIGQndW4gdG9rZW4gcGFyIGUtbWFpbC5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuaW1wb3J0IHsgY29ubmVjdGlvblJvdXRlLCBnZXRMb2dpbkxpbmtSb3V0ZSwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi9jb25maWcvdXNlcnMuanNcIjtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG4vLyBJbXBvcnRhdGlvbiBkZXMgZm9uY3Rpb25zIHV0aWxlcyBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGNoZWNrQW5zd2VyRGF0YXMsIGNoZWNrU2Vzc2lvbiwgZ2V0VGltZURpZmZlcmVuY2UsIHNldFNlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgYWxyZWFkeUNvbm5lY3RlZCwgbmVlZENob29zZUxvZ2luV2F5IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBteUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbm5lY3Rpb25cIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG4vLyBUZXN0IGRlIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyICsgYWZmaWNoYWdlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbi5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCB7IG1lc3NhZ2U6IGFscmVhZHlDb25uZWN0ZWQsIGNvbG9yOlwiaW5mb1wiIH0pOy8vIHBvdXIgbCdhZmZpY2hlciBzdXIgbGEgcGFnZSBzdWl2YW50ZVxuICAgICAgICAgICAgY29uc3QgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgaG9tZVBhZ2U9dXNlci5zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2V0TG9jYWx5KFwibWVzc2FnZVwiKSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5tZXNzYWdlLCBcIlwiLCBbZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5jb2xvcl0pO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgIFxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuXG4vLyBUcmFpdGVtZW50IGRlIGwnZW52b2kgZGVzIGRvbm7DqWVzIGRlIGNvbm5leGlvbiA6XG5teUZvcm0uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjsvLyBlZmZhY2UgZCfDqXZlbnR1ZWxzIG1lc3NhZ2VzIGTDqWrDoCBhZmZpY2jDqXNcbiAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhteUZvcm0pO1xuICAgICAgICBpZihpc0VtcHR5KGRhdGFzLnBhc3N3b3JkKSAmJiBpc0VtcHR5KGRhdGFzLmdldExvZ2luTGluaykpXG4gICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcImRpdlwiLCBuZWVkQ2hvb3NlTG9naW5XYXksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGRhdGFzLmdldExvZ2luTGluaykpXG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIGFwaVVybCt1c2VyUm91dGVzK2dldExvZ2luTGlua1JvdXRlKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY29ubmVjdGlvblJvdXRlKTtcbiAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzcG9uc2UubWVzc2FnZSkpIFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAgIC8vIGNhcyBkJ3VuZSBkZW1hbmRlIGRlIGxpZW4gZGUgY29ubmV4aW9uIGF2ZWMgc3VjY8Oocy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFpc0VtcHR5KHJlc3BvbnNlLnVzZXJJZCkgJiYgIWlzRW1wdHkocmVzcG9uc2UuY29ubmV4aW9uVGltZSkgJiYgIWlzRW1wdHkocmVzcG9uc2UudG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgeyAgIC8vIGNhcyBkJ3VuZSBjb25uZXhpb24gdmlhIG1vdCBkZSBwYXNzZSBhdmVjIHN1Y2PDqHMgOiBvbiBjcsOpZSB1bmUgc2Vzc2lvbiBkZSBjb25uZXhpb24gZXQgcmVkaXJpZ2UgbCd1dGlsaXNhdGV1ci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29ubmV4aW9uTWF4VGltZT1EYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmNvbm5leGlvblRpbWUuZW5kc1dpdGgoXCJkYXlzXCIpKS8vIGwndXRpbGlzYXRldXIgYSBkZW1hbmTDqSDDoCByZXN0ZXIgY29ubmVjdMOpIHN1ciBsYSBkdXLDqWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjI0KjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uKHJlc3BvbnNlLnVzZXJJZCwgcmVzcG9uc2UudG9rZW4sIGNvbm5leGlvbk1heFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISBpbXBvcnRhbnQgcG91ciBuZSBwYXMgZW5yZWdpc3RlciBwbHVzaWV1cnMgZm9pcyBzb24gw6l2ZW50dWVsIHLDqXN1bHRhdCBhdSBxdWl6LiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGwndXRpbGlzYXRldXIgcGV1dCBhdm9pciB0ZW50w6kgZCdhY2PDqWRlciDDoCB1bmUgYXV0cmUgcGFnZSBxdWUgc2EgcGFnZSBkJ2FjY3VlaWwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmw9Z2V0TG9jYWx5KFwidXJsXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KHVybCkgJiYgdXJsLmhyZWYuaW5kZXhPZihzaXRlVXJsKSE9PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXVybC5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1cmxcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPWNvbmZpZ1RlbXBsYXRlW3Jlc3BvbnNlLnN0YXR1cytcIkhvbWVQYWdlXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YXMudGltZURpZmZlcmVuY2U9Z2V0VGltZURpZmZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgw6AgdW4gcXVpeiwgaidham91dGUgbGVzIGluZm9zIGRlIHNvbiByw6lzdWx0YXQgYXV4IGRvbm7DqWVzIGVudm95w6llcyA6XG4gICAgICAgICAgICAgICAgZGF0YXM9Y2hlY2tBbnN3ZXJEYXRhcyhkYXRhcyk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb25uZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkTWluTGVuZ3RoIiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsImlzRW1wdHkiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJ0cmltSWZOb3ROdWxsIiwibXlTdHJpbmciLCJzaG9ydGVuSWZMb25nZXJUaGFuIiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwicmVwbGFjZUFsbCIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsImdldFJhbmRvbUludCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlRm9ybWF0IiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwiZ2V0UGFzc3dvcmQiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJteUZvcm0iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGl2TWVzc2FnZSIsImRpdlJlc3BvbnNlIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJzYXZlTG9jYWx5IiwibWVzc2FnZSIsImNvbG9yIiwidXNlciIsImdldExvY2FseSIsImhvbWVQYWdlIiwic3RhdHVzIiwid2luZG93IiwibG9jYXRpb24iLCJhc3NpZ24iLCJsb2FkTWF0b21vIiwic3R5bGUiLCJkaXNwbGF5IiwiYWRkRWxlbWVudCIsInJlbW92ZUxvY2FseSIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGRFdmVudExpc3RlbmVyIiwicHJldmVudERlZmF1bHQiLCJpbm5lckhUTUwiLCJkYXRhcyIsImdldERhdGFzRnJvbUlucHV0cyIsImdldExvZ2luTGluayIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJ1c2VySWQiLCJjb25uZXhpb25UaW1lIiwidG9rZW4iLCJjb25uZXhpb25NYXhUaW1lIiwibm93IiwiZW5kc1dpdGgiLCJwYXJzZUludCIsInNldFNlc3Npb24iLCJpbmRleE9mIiwiZXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5Iiwic2V0UmVxdWVzdEhlYWRlciIsInRpbWVEaWZmZXJlbmNlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJjaGVja0Fuc3dlckRhdGFzIiwic2VuZCIsInN0cmluZ2lmeSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsImxpbmsiLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJpbnB1dHNDb25mIiwiZWxlbWVudHMiLCJpZElucHV0IiwiaW5wdXRIVE1MIiwiYXR0cmlidXRlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwicm91bmQiLCJnZXRUaW1lIiwidmlzaXRvckluZm8iLCJnZXRWaXNpdG9ySW5mbyIsImNyZWF0ZVRzIiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsTUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLE1BQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQyxxREFBRCxDQUE5Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSUMsUUFBTSxFQUFFLDJCQURaO0FBRUlDLFNBQU8sRUFBRSx1QkFGYjtBQUdJQyxXQUFTLEVBQUUsU0FIZjtBQUlJQyxZQUFVLEVBQUUsbUJBSmhCO0FBS0lDLFlBQVUsRUFBRSxtQkFMaEI7QUFNSUMsYUFBVyxFQUFFLHVCQU5qQjtBQU9JQyxXQUFTLEVBQUUsSUFQ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QW9DQTtBQUNJOUcsa0ZBQVksQ0FBQyxNQUFELENBQVo7QUFDQWlILHdCQUFZLENBQUNOLGNBQUQsRUFBaUJ4SCxPQUFqQixFQUEwQnlILFNBQTFCLENBQVo7QUFDQUUsbUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFNBNUNEOztBQTZDQXBHLFdBQUcsQ0FBQzZHLE9BQUosR0FBYyxNQUFNUixNQUFNLENBQUNyRyxHQUFHLENBQUM4RyxVQUFMLENBQTFCOztBQUNBOUcsV0FBRyxDQUFDMEIsSUFBSjtBQUNIO0FBQ0o7QUFDSixHQXRFTSxDQUFQO0FBdUVILENBekVNLEMsQ0EwRVA7O0FBQ0EsTUFBTTZFLFlBQVksR0FBRyxDQUFDTixjQUFELEVBQWlCeEgsT0FBakIsRUFBMEJ5SCxTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQ3BPLDJEQUFPLENBQUMyRyxPQUFELENBQVgsRUFDSUQsb0VBQVUsQ0FBQyxTQUFELEVBQVlDLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQzNHLDJEQUFPLENBQUNvTyxTQUFELENBQVgsRUFDSTFILG9FQUFVLENBQUMsS0FBRCxFQUFRMEgsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDcE8sMkRBQU8sQ0FBQ21PLGNBQUQsQ0FBWCxFQUNJbEgsTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxNQUFoQixDQUF1QmdILGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvY29ubmVjdGlvbi5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9jb25uZWN0aW9uLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIERFIFNFIENPTk5FQ1RFUlxuXG4vLy8gTCd1dGlsaXNhdGV1ciBwZXV0IGF2b2lyIHLDqXBvbmR1IMOgIHVuIHF1aXogYXZhbnQgZCdhcnJpdmVyIHN1ciBsYSBwYWdlIGRlIGNvbm5leGlvbi5cbi8vLyBEYW5zIGNlIGNhcyBpbCBmYXV0IGVucmVnaXN0cmVyIHNvbiByw6lzdWx0YXQgZW4gbcOqbWUgdGVtcHMsIHVuZSBmb2lzIGxhIGNvbm5leGlvbiB2YWxpZMOpZS5cblxuLy8vIExlIGNvbm5leGlvbiBwZXV0IHNlIGZhaXJlIGRpcmVjdGVtZW50IGljaSB2aWEgbGEgc2Fpc2llIGQndW4gbW90IGRlIHBhc3NlIG91IHZpYSBsJ2Vudm9pIGQndW4gdG9rZW4gcGFyIGUtbWFpbC5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuaW1wb3J0IHsgY29ubmVjdGlvblJvdXRlLCBnZXRMb2dpbkxpbmtSb3V0ZSwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi9jb25maWcvdXNlcnMuanNcIjtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG4vLyBJbXBvcnRhdGlvbiBkZXMgZm9uY3Rpb25zIHV0aWxlcyBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGNoZWNrQW5zd2VyRGF0YXMsIGNoZWNrU2Vzc2lvbiwgZ2V0VGltZURpZmZlcmVuY2UsIHNldFNlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgYWxyZWFkeUNvbm5lY3RlZCwgbmVlZENob29zZUxvZ2luV2F5IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBteUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbm5lY3Rpb25cIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG4vLyBUZXN0IGRlIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyICsgYWZmaWNoYWdlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbi5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCB7IG1lc3NhZ2U6IGFscmVhZHlDb25uZWN0ZWQsIGNvbG9yOlwiaW5mb1wiIH0pOy8vIHBvdXIgbCdhZmZpY2hlciBzdXIgbGEgcGFnZSBzdWl2YW50ZVxuICAgICAgICAgICAgY29uc3QgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgaG9tZVBhZ2U9dXNlci5zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2V0TG9jYWx5KFwibWVzc2FnZVwiKSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5tZXNzYWdlLCBcIlwiLCBbZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5jb2xvcl0pO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgIFxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuXG4vLyBUcmFpdGVtZW50IGRlIGwnZW52b2kgZGVzIGRvbm7DqWVzIGRlIGNvbm5leGlvbiA6XG5teUZvcm0uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjsvLyBlZmZhY2UgZCfDqXZlbnR1ZWxzIG1lc3NhZ2VzIGTDqWrDoCBhZmZpY2jDqXNcbiAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhteUZvcm0pO1xuICAgICAgICBpZihpc0VtcHR5KGRhdGFzLnBhc3N3b3JkKSAmJiBpc0VtcHR5KGRhdGFzLmdldExvZ2luTGluaykpXG4gICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcImRpdlwiLCBuZWVkQ2hvb3NlTG9naW5XYXksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGRhdGFzLmdldExvZ2luTGluaykpXG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIGFwaVVybCt1c2VyUm91dGVzK2dldExvZ2luTGlua1JvdXRlKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY29ubmVjdGlvblJvdXRlKTtcbiAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzcG9uc2UubWVzc2FnZSkpIFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAgIC8vIGNhcyBkJ3VuZSBkZW1hbmRlIGRlIGxpZW4gZGUgY29ubmV4aW9uIGF2ZWMgc3VjY8Oocy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFpc0VtcHR5KHJlc3BvbnNlLnVzZXJJZCkgJiYgIWlzRW1wdHkocmVzcG9uc2UuY29ubmV4aW9uVGltZSkgJiYgIWlzRW1wdHkocmVzcG9uc2UudG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgeyAgIC8vIGNhcyBkJ3VuZSBjb25uZXhpb24gdmlhIG1vdCBkZSBwYXNzZSBhdmVjIHN1Y2PDqHMgOiBvbiBjcsOpZSB1bmUgc2Vzc2lvbiBkZSBjb25uZXhpb24gZXQgcmVkaXJpZ2UgbCd1dGlsaXNhdGV1ci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29ubmV4aW9uTWF4VGltZT1EYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmNvbm5leGlvblRpbWUuZW5kc1dpdGgoXCJkYXlzXCIpKS8vIGwndXRpbGlzYXRldXIgYSBkZW1hbmTDqSDDoCByZXN0ZXIgY29ubmVjdMOpIHN1ciBsYSBkdXLDqWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjI0KjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uKHJlc3BvbnNlLnVzZXJJZCwgcmVzcG9uc2UudG9rZW4sIGNvbm5leGlvbk1heFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISBpbXBvcnRhbnQgcG91ciBuZSBwYXMgZW5yZWdpc3RlciBwbHVzaWV1cnMgZm9pcyBzb24gw6l2ZW50dWVsIHLDqXN1bHRhdCBhdSBxdWl6LiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGwndXRpbGlzYXRldXIgcGV1dCBhdm9pciB0ZW50w6kgZCdhY2PDqWRlciDDoCB1bmUgYXV0cmUgcGFnZSBxdWUgc2EgcGFnZSBkJ2FjY3VlaWwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmw9Z2V0TG9jYWx5KFwidXJsXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KHVybCkgJiYgdXJsLmhyZWYuaW5kZXhPZihzaXRlVXJsKSE9PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXVybC5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1cmxcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPWNvbmZpZ1RlbXBsYXRlW3Jlc3BvbnNlLnN0YXR1cytcIkhvbWVQYWdlXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YXMudGltZURpZmZlcmVuY2U9Z2V0VGltZURpZmZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgw6AgdW4gcXVpeiwgaidham91dGUgbGVzIGluZm9zIGRlIHNvbiByw6lzdWx0YXQgYXV4IGRvbm7DqWVzIGVudm95w6llcyA6XG4gICAgICAgICAgICAgICAgZGF0YXM9Y2hlY2tBbnN3ZXJEYXRhcyhkYXRhcyk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/deconnection.app.js b/front/public/JS/deconnection.app.js index a3a923f..c01667a 100644 --- a/front/public/JS/deconnection.app.js +++ b/front/public/JS/deconnection.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -586,99 +595,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -823,4 +811,4 @@ const updateAccountLink = (status, configTemplate) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZGVjb25uZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImRpdlJlc3BvbnNlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsInJlbW92ZUxvY2FseSIsImFkZEVsZW1lbnQiLCJlIiwic2F2ZUxvY2FseSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldExvY2FseSIsImpzb24iLCJwYXJzZSIsImdldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJBcnJheSIsImlzQXJyYXkiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsImNvbnNvbGUiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImNvbmZpZ1RlbXBsYXRlIiwibGluayIsImhvbWVQYWdlIiwiaHJlZiJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGQSxJQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENBQTlCOztBQUVBRSxNQUFNLENBQUNDLE9BQVA7QUFFSUMsUUFBTSxFQUFFLDJCQUZaO0FBR0lDLFNBQU8sRUFBRSx1QkFIYjtBQUlJQyxXQUFTLEVB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O0FBQ0gsQ0FMTSxDIiwiZmlsZSI6Ii4vSlMvZGVjb25uZWN0aW9uLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2RlY29ubmVjdGlvbi5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvdXNlclwiOiBcIi4uL2xhbmcvZnIvdXNlci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3VzZXIkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCIvLyAtLSBHRVNUSU9OIERFIExBIFBBR0UgREUgRMOJQ09OTkVYSU9OXG5cbi8vLyBPbiBzZSBjb250ZW50ZSBpY2kgZGUgc3VwcHJpbWVyIGxhIHNlc3Npb24gc3RvY2vDqWUgY8O0dMOpIGNsaWVudFxuXG4vLyBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gY8O0dMOpIGNsaWVudCA6XG5pbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCB0aGVtZSB9IGZyb20gXCIuLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbi8vIEltcG9ydGF0aW9uIGRlcyBmb25jdGlvbnMgdXRpbGUgYXUgc2NyaXB0IDpcbmltcG9ydCB7IHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2IH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgYnllYnllTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXJsXCIpO1xuICAgICAgICByZW1vdmVMb2NhbHkoXCJtZXNzYWdlXCIpO1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgYnllYnllTWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7ICAgICAgICBcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTsiLCIvLyBGT05DVElPTlMgVVRJTEVTIEFVIFNUT0NLQUdFIExPQ0FMIChTRVNTSU9OLCBDT09LSUVTLCBJTkRFWERCLCBFVEMuKVxuLy8gUmV2ZW5pciBwb3VyIGfDqXJlciBsZSBjYXMgb8O5IGxvY2FsLnN0b3JhZ2Ugbidlc3QgcGFzIGNvbm51IHBvdXIgdXRpbGlzZXIgY29va2llXG4gICAgXG5leHBvcnQgY29uc3Qgc2F2ZUxvY2FseSA9IChuYW1lLCBkYXRhKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2FseSA9IChuYW1lLCBqc29uPWZhbHNlKSA9Plxue1xuICAgIGlmKGpzb24pXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxvY2FseSA9IChuYW1lKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50ID0gKGVsdFBhcmVudCwgZWx0VHlwZSwgZWx0Q29udGVudD1cIlwiLCBlbHRJZD1cIlwiLCBlbHRDbGFzcz1bXSwgZWx0QXR0cmlidXRlcz17fSwgcmVwbGFjZT10cnVlKSA9Plxue1xuICAgIGlmKGlzRW1wdHkoZWx0VHlwZSkgfHwgaXNFbXB0eShlbHRQYXJlbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsdFR5cGUpO1xuICAgICAgICBcbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0SWQpKS8vIHRlc3RlciBzaSBsJ2lkIG4nZXN0IHBhcyBkw6lqw6AgdXRpbGlzw6kgZGFucyBsZSBET00gP1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pZD1lbHRJZDtcblxuICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsdENsYXNzKSAmJiBlbHRDbGFzcy5sZW5ndGghPTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiBlbHRDbGFzcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWx0Q2xhc3NbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodHlwZW9mIGVsdEF0dHJpYnV0ZXMgPT09IFwib2JqZWN0XCIpIC8vICEhIHRvdXMgbGVzIG9iamV0cyBuZSBzb250IHBhcyBva1xuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGF0dHJpYnV0TmFtZSBpbiBlbHRBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0TmFtZSwgZWx0QXR0cmlidXRlc1thdHRyaWJ1dE5hbWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdENvbnRlbnQpKVxuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUw9ZWx0Q29udGVudC5yZXBsYWNlKC9cXG4vZyxcIjxicj5cIik7Ly8gaW5uZXJIVE1MIHBlcm1ldCBkJ2Fqb3V0ZXIgZHUgdGV4dGUgYXlhbnQgbHVpLW3Dqm1lIGRlcyBiYWxpc2VzLCBldGMuXG4gICAgICAgICAgICBcbiAgICAgICAgaWYocmVwbGFjZSlcbiAgICAgICAgICAgIGVsdFBhcmVudC5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgZWx0UGFyZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpO1xuICAgIH0gICAgXG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvZGVjb25uZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiZGl2UmVzcG9uc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwicmVtb3ZlTG9jYWx5IiwiYWRkRWxlbWVudCIsImUiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0TG9jYWx5IiwianNvbiIsInBhcnNlIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpZCIsIkFycmF5IiwiaXNBcnJheSIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwiY29uc29sZSIsImxvZyIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwiY29uZmlnVGVtcGxhdGUiLCJsaW5rIiwiaG9tZVBhZ2UiLCJocmVmIl0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsTUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLE1BQU1DLGNBQWMs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Ozs7Ozs7Ozs7OztBQ0hQO0FBQUE7QUFBQTtBQUFBO0FBRU8sTUFBTXRCLFFBQVEsR0FBRyxNQUN4QjtBQUNJaUMsU0FBTyxDQUFDQyxHQUFSLENBQVkseU9BQVo7QUFDQSxTQUFPLElBQVA7QUFDSCxDQUpNO0FBTUEsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBQ0MsTUFBRCxFQUFTQyxjQUFULEtBQ2pDO0FBQ0ksUUFBTUMsSUFBSSxHQUFDeEMsUUFBUSxDQUFDQyxjQUFULENBQXdCLGlCQUF4QixDQUFYO0FBQ0EsUUFBTXdDLFFBQVEsR0FBQ0gsTUFBTSxHQUFDLFVBQXRCO0FBQ0FFLE1BQUksQ0FBQ0UsSUFBTCxHQUFVLE1BQUlILGNBQWMsQ0FBQ0UsUUFBRCxDQUE1QjtBQUNILENBTE0sQyIsImZpbGUiOiIuL0pTL2RlY29ubmVjdGlvbi5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9kZWNvbm5lY3Rpb24uanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwiLy8gLS0gR0VTVElPTiBERSBMQSBQQUdFIERFIETDiUNPTk5FWElPTlxuXG4vLy8gT24gc2UgY29udGVudGUgaWNpIGRlIHN1cHByaW1lciBsYSBzZXNzaW9uIHN0b2Nrw6llIGPDtHTDqSBjbGllbnRcblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG4vLyBJbXBvcnRhdGlvbiBkZXMgZm9uY3Rpb25zIHV0aWxlIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyByZW1vdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGJ5ZWJ5ZU1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgIHJlbW92ZUxvY2FseShcInVybFwiKTtcbiAgICAgICAgcmVtb3ZlTG9jYWx5KFwibWVzc2FnZVwiKTtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGJ5ZWJ5ZU1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pOyAgICAgICAgXG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/deleteValidation.app.js b/front/public/JS/deleteValidation.app.js index 1f8afca..c15b963 100644 --- a/front/public/JS/deleteValidation.app.js +++ b/front/public/JS/deleteValidation.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -605,99 +614,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1356,4 +1344,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9kZWxldGVWYWxpZGF0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJkaXZSZXNwb25zZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJoZWxsb0RldiIsImluaXRpYWxpc2UiLCJkYXRhcyIsImdldFVybFBhcmFtcyIsInQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzIiwibWVzc2FnZSIsImFkZEVsZW1lbnQiLCJyZW1vdmVMb2NhbHkiLCJlcnJvcnMiLCJBcnJheSIsImlzQXJyYXkiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJnZXRMb2NhbHkiLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsImxvZyIsInVwZGF0ZUFjY291bnRMaW5rIiwiY29uZmlnVGVtcGxhdGUiLCJsaW5rIiwiaG9tZVBhZ2UiLCJsb2FkTWF0b21vIiwiX3BhcSIsIndpbmRvdyIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vdyIsIm5vd1RzIiwicm91bmQiLCJnZXRUaW1lIiwidmlzaXRvckluZm8iLCJnZXRWaXNpdG9ySW5mbyIsImNyZWF0ZVRzIiwicGFyc2VJbnQiLCJjb29raWVUaW1lb3V0Iiwib3JpZ2luYWxUaW1lb3V0Iiwic2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLCJ1IiwiZCIsImciLCJzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJ0eXBlIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibG9jYXRpb24iLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRlY29kZVVSSSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsImNoZWNrU2Vzc2lvbiIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ1c2VyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwiYXNzaWduIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFD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QUFELENBQVgsRUFDSTlFLG9FQUFVLENBQUMsS0FBRCxFQUFROEUsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDbE0sMkRBQU8sQ0FBQ2lNLGNBQUQsQ0FBWCxFQUNJL0MsTUFBTSxDQUFDeUIsUUFBUCxDQUFnQnFDLE1BQWhCLENBQXVCZixjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL2RlbGV0ZVZhbGlkYXRpb24uYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvZGVsZXRlVmFsaWRhdGlvbi5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBHRVNUSU9OIERFIExBIFBBR0UgUEVSTUVUVEFOVCBERSBWQUxJREVSIExBIERFTUFOREUgREUgU1VQUFJFU1NJT04gREUgU09OIENPTVBURVxuXG4vLy8gVW4gdG9rZW4gZXN0IHRyYW5zbWlzIGVuIHBhcmFtw6h0cmUgZGUgbCdVcmwuIElsIGEgdW5lIHZhbGlkaXTDqSBsaW1pdMOpZSBkYW5zIGxlIHRlbXBzLlxuLy8vIFNpIGxlIHRva2VuIGVzdCBvaywgb24gdmFsaWRlIGxhIHN1cHByZXNzaW9uLCBzdXBwcmltZSBsYSBzZXNzaW9uIGRlIGwndXRpbGlzYXRldXIgZXQgYWZmaWNoZSB1biBtZXNzYWdlIGRlIGNvbmZpcm1hdGlvbi5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgeyBhY2NvdW50UGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjaGVja0RlbGV0ZUxpbmtSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgZGF0YXM9Z2V0VXJsUGFyYW1zKCk7XG4gICAgICAgIGlmKGRhdGFzICYmIGRhdGFzLnQhPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tEZWxldGVMaW5rUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGF0dXMgPT09IDQwMCAmJiByZXNwb25zZS5lcnJvcnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGFjY291bnRQYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIitkYXRhcy50KTsgXG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9kZWxldGVWYWxpZGF0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZE1pbkxlbmd0aCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJtYXRvbW8iLCJ1cmwiLCJzaXRlSWQiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImRpdlJlc3BvbnNlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImRhdGFzIiwiZ2V0VXJsUGFyYW1zIiwidCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzdGF0dXMiLCJtZXNzYWdlIiwiYWRkRWxlbWVudCIsInJlbW92ZUxvY2FseSIsImVycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsInNldFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImdldExvY2FseSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwibG9nIiwidXBkYXRlQWNjb3VudExpbmsiLCJjb25maWdUZW1wbGF0ZSIsImxpbmsiLCJob21lUGFnZSIsImxvYWRNYXRvbW8iLCJfcGFxIiwid2luZG93IiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJwYXJzZUludCIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsInMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInR5cGUiLCJhc3luYyIsInNyYyIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJsb2NhdGlvbiIsInBhcmFtZXRlcnMiLCJzcGxpdCIsInBhcmFtIiwiZGVjb2RlVVJJIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJ0b2tlbiIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwiY2hlY2tTZXNzaW9uIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsInVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ0aW1lRGlmZmVyZW5jZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7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QTZDQXRHLFdBQUcsQ0FBQ21ILE9BQUosR0FBYyxNQUFNWixNQUFNLENBQUN2RyxHQUFHLENBQUNvSCxVQUFMLENBQTFCOztBQUNBcEgsV0FBRyxDQUFDa0IsSUFBSjtBQUNIO0FBQ0o7QUFDSixHQXRFTSxDQUFQO0FBdUVILENBekVNLEMsQ0EwRVA7O0FBQ0EsTUFBTXVGLFlBQVksR0FBRyxDQUFDTixjQUFELEVBQWlCeEYsT0FBakIsRUFBMEJ5RixTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQzVNLDJEQUFPLENBQUNtSCxPQUFELENBQVgsRUFDSVcsb0VBQVUsQ0FBQyxTQUFELEVBQVlYLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ25ILDJEQUFPLENBQUM0TSxTQUFELENBQVgsRUFDSTlFLG9FQUFVLENBQUMsS0FBRCxFQUFROEUsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDNU0sMkRBQU8sQ0FBQzJNLGNBQUQsQ0FBWCxFQUNJL0MsTUFBTSxDQUFDeUIsUUFBUCxDQUFnQnFDLE1BQWhCLENBQXVCZixjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL2RlbGV0ZVZhbGlkYXRpb24uYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvZGVsZXRlVmFsaWRhdGlvbi5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBHRVNUSU9OIERFIExBIFBBR0UgUEVSTUVUVEFOVCBERSBWQUxJREVSIExBIERFTUFOREUgREUgU1VQUFJFU1NJT04gREUgU09OIENPTVBURVxuXG4vLy8gVW4gdG9rZW4gZXN0IHRyYW5zbWlzIGVuIHBhcmFtw6h0cmUgZGUgbCdVcmwuIElsIGEgdW5lIHZhbGlkaXTDqSBsaW1pdMOpZSBkYW5zIGxlIHRlbXBzLlxuLy8vIFNpIGxlIHRva2VuIGVzdCBvaywgb24gdmFsaWRlIGxhIHN1cHByZXNzaW9uLCBzdXBwcmltZSBsYSBzZXNzaW9uIGRlIGwndXRpbGlzYXRldXIgZXQgYWZmaWNoZSB1biBtZXNzYWdlIGRlIGNvbmZpcm1hdGlvbi5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgeyBhY2NvdW50UGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjaGVja0RlbGV0ZUxpbmtSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgZGF0YXM9Z2V0VXJsUGFyYW1zKCk7XG4gICAgICAgIGlmKGRhdGFzICYmIGRhdGFzLnQhPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tEZWxldGVMaW5rUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGF0dXMgPT09IDQwMCAmJiByZXNwb25zZS5lcnJvcnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGFjY291bnRQYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIitkYXRhcy50KTsgXG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/group.app.js b/front/public/JS/group.app.js index 3494972..13ecae0 100644 --- a/front/public/JS/group.app.js +++ b/front/public/JS/group.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -534,99 +543,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1551,4 +1539,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2dyb3VwLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9hbnN3ZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJtYXRvbW8iLCJ1cmwiLCJzaXRlSWQiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwiLCJjaGVja1Jlc3BvbnNlc091cHV0TWVkaXVtIiwiY2hlY2tSZXNwb25zZXNPdXB1dFN1Y2Nlc3MiLCJuZWVkSW50ZWdlck51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkSW50ZWdlck51bWJlclNlY29uZGVzUmVzcG9uc2UiLCJuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTWF4TnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNYXhOdW1iZXJDb3JyZWN0UmVzcG9uc2VzIiwibmVlZE1pbk51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyU2Vjb25kZXNSZXNwb25zZSIsIm5vUHJldmlvdXNBbnN3ZXIiLCJwcmV2aW91c0Fuc3dlcnNMaW5lIiwicHJldmlvdXNBbnN3ZXJzU3RhdHMiLCJwcmV2aW91c0Fuc3dlcnNUaXRsZSIsInJlc3BvbnNlU2F2ZWRFcnJvciIsInJlc3BvbnNlU2F2ZWRNZXNzYWdlIiwic3RhdHNVc2VyIiwid2FudFRvU2F2ZVJlc3BvbnNlcyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwidXNlcnNHZXRDb25maWdVcmwiLCJjb25maWdUZW1wbGF0ZSIsImJ0blN1Ym1pdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZSZXNwb25zZSIsImV4cGxhbmF0aW9uc1RpdGxlIiwiZXhwbGFuYXRpb25zQ29udGVudCIsIm15Rm9ybSIsImNocm9ub0JlZ2luIiwiYmVnaW5BbnN3ZXIiLCJub3ciLCJzdHlsZSIsImRpc3BsYXkiLCJpc0Nvbm5lY3RlZCIsInVzZXIiLCJpbml0aWFsaXNlIiwiY2hlY2tTZXNzaW9uIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJjaGVja1ByZXZpb3VzUmVzcG9uc2VzIiwibG9hZE1hdG9tbyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWxsb0RldiIsImFuc3dlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJwcmV2ZW50RGVmYXVsdCIsImlubmVySFRNTCIsInVzZXJSZXNwb25zZXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJkdXJhdGlvbiIsInJvdW5kIiwibmJRdWVzdGlvbnMiLCJuYkNvcnJlY3RBbnN3ZXJzIiwiR3JvdXBJZCIsImlkQ2hvaWNlIiwiaWRRdWVzdGlvbiIsImdvb2RSZXNwb25zZSIsIml0ZW0iLCJzdGFydHNXaXRoIiwibGFzdEluZGV4T2YiLCJwYXJlbnROb2RlIiwiY2xhc3NMaXN0IiwiYWRkIiwiZ2V0T3VwdXQiLCJjaGVja0Fuc3dlck91cHV0IiwieGhyU2F2ZUFuc3dlciIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwieGhyUmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJtZXNzYWdlIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwiaGVyZSIsInNldFJlcXVlc3RIZWFkZXIiLCJ0b2tlbiIsInRpbWVEaWZmZXJlbmNlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJzZW5kIiwic3RyaW5naWZ5Iiwic2F2ZUFuc3dlciIsImFkZEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZXhwbGFuYXRpb25zIiwicXVlcnlTZWxlY3RvckFsbCIsInhoclByZXZpb3VzUmVzIiwicmVzcG9uc2UiLCJuYlJlc3BvbnNlcyIsInByZXZpb3VzQW5zd2Vyc0NvbnRlbnQiLCJ0b3ROYlF1ZXN0aW9ucyIsInRvdE5iQ29ycmVjdEFuc3dlcnMiLCJ0b3REdXJhdGlvbiIsIm1hcExpbmVDb250ZW50IiwiREFURUFOU1dFUiIsImRhdGVGb3JtYXQiLCJjcmVhdGVkQXQiLCJOQkNPUlJFQ1RBTlNXRVJTIiwiTkJRVUVTVElPTlMiLCJBVkdEVVJBVElPTiIsInJlcGxhY2VBbGwiLCJBVkdDT1JSRUNUQU5TV0VSUyIsImNvbmZpZ0Zyb250RW5kIiwidHh0IiwiUXVlc3Rpb25uYWlyZUlkIiwic2F2ZUxvY2FseSIsInJhdGlvIiwiRFVSQVRJT04iLCJvdXRwdXQiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImRhdGFzIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJpbnNlcnRCZWZvcmUiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwiYXNzaWduIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRkEsSUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLElBQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQyxxREFBRCxDQUE5Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQO0FBRUlDLFFBQU0sRUFBRSwyQkFGWjtBQUdJQyxTQUFPLEVBQUUsdUJBSGI7QUFJSUMsV0FBUyxFQUFFLFNBSmY7QUFLSUMsWUFBVSxFQUFFLG1CQUxoQjtBQU1JQyxZQUFVLEVBQUUsbUJBTmhCO0FBT0lDLGFBQVcsRUFBRSx1QkFQakI7QUFRSUMsV0FBUyxFQUFFLElB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SCxNQUFoQixDQUF1QmQsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9ncm91cC5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9ncm91cC5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2Fuc3dlclwiOiBcIi4uL2xhbmcvZnIvYW5zd2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvYW5zd2VyJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwgOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBjZXJ0YWluLCB2b3VzIGZlcmV6IG1pZXV4IGxhIHByb2NoYWluZSBmb2lzICFcIixcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0TWVkaXVtIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQydlc3QgcGFzIG1hbCBkdSB0b3V0ICFcIixcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcyA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEJyYXZvICEgUmllbiBuZSB2b3VzIMOpY2hhcHBlICFcIixcbiAgICBuZWVkSW50ZWdlck51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllci5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclNlY29uZGVzUmVzcG9uc2UgOiBcIkxhIGR1csOpZSBkZSBsYSByw6lwb25zZSBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIgZGUgc2Vjb25kZXMuXCIsXG4gICAgbmVlZEludGVnZXJOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllci5cIixcbiAgICBuZWVkTWF4TnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGF1c3NpIMOpbGV2w6kuXCIsXG4gICAgbmVlZE1pbk51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgbmUgcGV1dCDDqnRyZSBpbmbDqXJpZXVyIMOgIDEuXCIsXG4gICAgbmVlZE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIGRvaXQgw6p0cmUgZm91cm5pLlwiLFxuICAgIG5lZWROdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IGRvaXQgw6p0cmUgZm91cm5pLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIHN1cMOpcmlldXIgYXUgbm9tYnJlIGRlIHF1ZXN0aW9ucy5cIixcbiAgICBuZWVkTWluTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgbmUgcGV1dCDDqnRyZSBuw6lnYXRpZi5cIixcbiAgICBuZWVkTWluTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIG5lIHBldXQgw6p0cmUgbsOpZ2F0aXZlLlwiLFxuICAgIG5vUHJldmlvdXNBbnN3ZXI6IFwiT24gZGlyYWl0IHF1ZSBjJ2VzdCBsYSBwcmVtacOocmUgZm9pcyBxdWUgdm91cyByw6lwb25kZXogw6AgY2UgcXVpei4gQm9ubmUgbGVjdHVyZSAhXCIsXG4gICAgcHJldmlvdXNBbnN3ZXJzTGluZTogXCJMZSBEQVRFQU5TV0VSLCB2b3VzIGF2ZXogcsOpcG9uZHUgY29ycmVjdGVtZW50IMOgIE5CQ09SUkVDVEFOU1dFUlMgcXVlc3Rpb25zIHN1ciBOQlFVRVNUSU9OUyBlbiBBVkdEVVJBVElPTiBzZWNvbmRlcy5cIixcbiAgICBwcmV2aW91c0Fuc3dlcnNTdGF0czogXCJFbiBtb3llbm5lLCB2b3VzIGF2ZXogcsOpcG9uZHUgw6AgY2UgcXVpeiBlbiBBVkdEVVJBVElPTiBzZWNvbmRlcywgZW4gYXlhbnQgPGI+QVZHQ09SUkVDVEFOU1dFUlMgJSBkZSBib25uZXMgcsOpcG9uc2VzPC9iPi5cIixcbiAgICBwcmV2aW91c0Fuc3dlcnNUaXRsZTogXCJCb25qb3VyICNOT00sIHZvaWNpIHZvcyBwcsOpY8OpZGVudHMgcsOpc3VsdGF0cyDDoCBjZSBxdWl6XCIsXG4gICAgcmVzcG9uc2VTYXZlZEVycm9yIDogXCJDZXBlbmRhbnQgdW5lIGVycmV1ciBhIMOpdMOpIHJlbmNvbnRyw6llIGR1cmFudCBsJ2VucmVnaXN0cmVtZW50IGRlIHZvdHJlIHLDqXN1bHRhdC4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICByZXNwb25zZVNhdmVkTWVzc2FnZSA6IFwiVm90cmUgcsOpc3VsdGF0IGEgw6l0w6kgZW5yZWdpc3Ryw6kuIDxhIGhyZWY9Jy8jVVJMJz5BY2PDqGRlciDDoCB0b3VzIHZvcyBxdWl6czwvYT4uXCIsXG4gICAgc3RhdHNVc2VyOiBcIlZvdXMgYXZleiBlbnJlZ2lzdHLDqSA8Yj5OQkFOU1dFUlMgcsOpcG9uc2VTMSDDoCBOQlFVRVNUSU9OTkFJUkVTIHF1aXpTMiBkaWZmw6lyZW50UzM8L2I+IHN1ciBsZXMgTkJUT1RRVUVTVElPTk5BSVJFUyBwcm9wb3PDqVM0IHBhciBsZSBzaXRlLjxicj5FbiBtb3llbm5lLCB2b3VzIGF2ZXogbWlzIEFWR0RVUkFUSU9OIHNlY29uZGVzIMOgIHLDqXBvbmRyZSBldCBhdmV6IDxiPmNvcnJlY3RlbWVudCByw6lwb25kdSDDoCBBVkdDT1JSRUNUQU5TV0VSUyAlIGRlcyBxdWVzdGlvbnM8L2I+LlwiLFxuICAgIHdhbnRUb1NhdmVSZXNwb25zZXM6IFwiU2kgdm91cyBsZSBzb3VoYWl0ZXosIHZvdXMgcG91dmV6IDx1PjxiPnNhdXZlZ2FyZGVyIHZvdHJlIHLDqXN1bHRhdDwvYj48L3U+IGVuIGNyw6lhbnQgdm90cmUgY29tcHRlIGNpLWRlc3NvdXMuIENlbGEgdm91cyBwZXJtZXR0cmEgYXVzc2kgZGUgPHU+PGI+cmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBcXFwiZ3JhaW5lcyBkZSBjdWx0dXJlXFxcIjwvYj48L3U+IGRpcmVjdGVtZW50IHN1ciB2b3RyZSBlLW1haWwuXCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyDDoCBzdXBwcmltZXIgdW5lIGZvaXMgcXVlIHRvdXQgcsOpY3Vww6lyZXIgZHUgYmFja2VuZCA6XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmwgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICB1c2Vyc0dldENvbmZpZ1VybCA6IFwiL3VzZXIvZ2V0Y29uZmlnXCIsXG4gICAgbGFuZyA6IFwiZnJcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIlxufTsiLCIvLyAtLSBHRVNUSU9OIERVIEZPUk1VTEFJUkUgUEVSTUVUVEFOVCBEJ0FGRklDSEVSIEVUIFLDiVBPTkRSRSDDgCBVTiBHUk9VUEUgREUgUVVJWlNcblxuLy8vIElsIG4nZXN0IHBhcyBuw6ljZXNzYWlyZSBkJ8OqdHJlIGNvbm5lY3TDqSBwb3VyIHLDqXBvbmRyZSBhdSBxdWl6IGV0IHZvaXIgc29uIHLDqXN1bHRhdC5cbi8vLyBNYWlzIHNpIHBhcyBjb25uZWN0w6ksIG9uIHByb3Bvc2Ugw6AgbCdpbnRlcm5hdXRlIGRlIHNlIGNvbm5lY3RlciBvdSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgc2F1dmVnYXJkZXIgc29uIHLDqXN1bHRhdC5cbi8vLyBEYW5zIGNlIGJ1dCBzb24gcsOpc3VsdGF0IGVzdCBzdG9ja8OpIGRhbnMgc29uIG5hdmlnYXRldXIuXG4vLy8gU2kgaWwgZXN0IGNvbm5lY3TDqSwgbCdlbnJlZ2lzdHJlbWVudCBkZSBzb24gcsOpc3VsdGF0IHNlIGZhaXQgYXV0b21hdGlxdWVtZW50IGPDtHTDqSBzZXJ2ZXVyIGV0IHNlcyDDqXZlbnR1ZWxzIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIHNvbnQgYWZmaWNow6lzLlxuXG4vLyBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gdGlyw6lzIGR1IGJhY2tlbmQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNBbnN3ZXJzLCBncm91cFJvdXRlcywgc2F2ZUFuc3dlcnNSb3V0ZSB9IGZyb20gXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXMuanNcIjtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyBjaGVja0Fuc3dlck91cHV0LCBzYXZlQW5zd2VyIH0gZnJvbSBcIi4vdG9vbHMvYW5zd2Vycy5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZ2V0TG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGF0YXNGcm9tSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGRhdGVGb3JtYXQsIHJlcGxhY2VBbGwgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBnZXRUaW1lRGlmZmVyZW5jZSB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBub1ByZXZpb3VzQW5zd2VyLCBwcmV2aW91c0Fuc3dlcnNMaW5lLCBwcmV2aW91c0Fuc3dlcnNTdGF0cywgcHJldmlvdXNBbnN3ZXJzVGl0bGUsIHJlc3BvbnNlU2F2ZWRFcnJvciwgd2FudFRvU2F2ZVJlc3BvbnNlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9hbnN3ZXJcIik7XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBidG5TdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNoZWNrUmVzcG9uc2VzXCIpO1xuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuY29uc3QgZXhwbGFuYXRpb25zVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4cGxhbmF0aW9uc1RpdGxlXCIpO1xuY29uc3QgZXhwbGFuYXRpb25zQ29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXhwbGFuYXRpb25zQ29udGVudFwiKTtcbmNvbnN0IG15Rm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3JvdXBcIik7XG5cbi8vIEFmZmljaGUgbGUgYm91dG9uIGRlIHNvdW1pc3Npb24gKyBkw6ljbGVuY2hlIGxlIGNocm9ub23DqHRyZSBtZXN1cmFudCBsYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UuXG5sZXQgY2hyb25vQmVnaW49MDtcbmNvbnN0IGJlZ2luQW5zd2VyID0gKCkgPT5cbntcbiAgICBjaHJvbm9CZWdpbj1EYXRlLm5vdygpO1xuICAgIGJ0blN1Ym1pdC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbn1cblxubGV0IGlzQ29ubmVjdGVkLCB1c2VyO1xuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICAvLyBTaSBKUyBhY3RpdsOpLCBvbiBhZmZpY2hlIGxlIGJvdXRvbiBkZSBzb3VtaXNzaW9uIGR1IGZvcm11bGFpcmUgOlxuICAgICAgICBiZWdpbkFuc3dlcigpO1xuICAgICAgICBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1widXNlclwiXSk7Ly8gXCJ1c2VyXCIgY2FyIHNldWxzIGxlcyB1dGlsaXNhdGV1cnMgZGUgYmFzZSBwZXV2ZW50IGVucmVnaXN0cmVyIGxldXJzIHLDqXBvbnNlcyBhdXggcXVpenNcbiAgICAgICAgLy8gU2kgbCd1dGlsaXNhdGV1ciBlc3QgY29ubmVjdMOpIGV0IGEgZMOpasOgIHLDqXBvbmR1IMOgIGNlIHF1aXosIG9uIGFmZmljaGUgc2VzIHByw6ljw6lkZW50ZXMgcsOpcG9uc2VzIMOgIGxhIHBsYWNlIGR1IHRleHRlIHNlcnZhbnQgw6AgZXhwbGlxdWVyIGxlIHRvcG8gYXV4IG5vdXZlYXV4XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpOy8vIGxpZW4gdmVycyBsZSBjb21wdGUgYWRhcHTDqSBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgY29ubmVjdMOpc1xuICAgICAgICAgICAgY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb2FkTWF0b21vKCk7XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTtcbmhlbGxvRGV2KCk7XG5cbi8vIFRyYWl0ZW1lbnQgZGUgbCdlbnZvaSBkZSBsYSByw6lwb25zZSBkZSBsJ3V0aWxpc2F0ZXVyIDpcbmxldCBhbnN3ZXIgPSB7fTtcbm15Rm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7ICAgICAgIFxuICAgICAgICBidG5TdWJtaXQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjsvLyBzZXVsZW1lbnQgdW4gZW52b2kgw6AgbGEgZm9pcywgU1ZQIDopXG4gICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiOy8vIHN1cHByaW1lIGxlcyDDqXZlbnR1ZWxzIG1lc3NhZ2VzIGTDqWrDoCBhZmZpY2jDqXMuXG4gICAgICAgIGNvbnN0IHVzZXJSZXNwb25zZXM9Z2V0RGF0YXNGcm9tSW5wdXRzKG15Rm9ybSk7XG4gICAgICAgIGFuc3dlci5kdXJhdGlvbj1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWNocm9ub0JlZ2luKS8xMDAwKTtcbiAgICAgICAgYW5zd2VyLm5iUXVlc3Rpb25zPTA7XG4gICAgICAgIGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzPTA7XG4gICAgICAgIGFuc3dlci5Hcm91cElkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3JvdXBJZFwiKS52YWx1ZTtcbiAgICAgICAgLy8gTGVzIHLDqXBvbnNlcyBzb250IHJlZ3JvdXDDqWVzIHBhciBxdWVzdGlvbiwgZG9uYyBxdWFuZCBpZFF1ZXN0aW9uIGNoYW5nZSwgb24gY29ubmHDrnQgbGUgcsOpc3VsdGF0IHBvdXIgbGEgcXVlc3Rpb24gcHLDqWPDqWRlbnRlLlxuICAgICAgICAvLyBQb3VyIHF1J3VuZSByw6lwb25zZSBzb2l0IGJvbm5lLCBpbCBmYXV0IGNvY2hlciB0b3V0ZXMgbGVzIGJvbm5lcyByw6lwb25zZXMgKHNpIFFDTSkgw6AgbGEgcXVlc3Rpb24gRVQgY29jaGVyIGF1Y3VuZSBkZXMgbWF1dmFpc2VzLlxuICAgICAgICBsZXQgaWRDaG9pY2UsIGlkUXVlc3Rpb249XCJcIiwgZ29vZFJlc3BvbnNlPWZhbHNlO1xuICAgICAgICBmb3IobGV0IGl0ZW0gaW4gdXNlclJlc3BvbnNlcylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoaXRlbS5zdGFydHNXaXRoKFwiaXNDb3JyZWN0X3Jlc3BvbnNlX1wiKSkvLyA9IE5vdXZlbGxlIHLDqXBvbnNlIHBvc3NpYmxlLlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkQ2hvaWNlID0gaXRlbS5zdWJzdHJpbmcoaXRlbS5sYXN0SW5kZXhPZihcIl9cIikgKyAxKTtcbiAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicXVlc3Rpb25faWRfcmVzcG9uc2VfXCIraWRDaG9pY2VdICE9IGlkUXVlc3Rpb24pIC8vID0gb24gY29tbWVuY2Ugw6AgdHJhaXRlciB1bmUgbm91dmVsbGUgcXVlc3Rpb24uXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZFF1ZXN0aW9uPXVzZXJSZXNwb25zZXNbXCJxdWVzdGlvbl9pZF9yZXNwb25zZV9cIitpZENob2ljZV07XG4gICAgICAgICAgICAgICAgICAgIGFuc3dlci5uYlF1ZXN0aW9ucysrO1xuICAgICAgICAgICAgICAgICAgICBpZihnb29kUmVzcG9uc2UpIC8vID0gcGFzIGQnZXJyZXVyIMOgIGxhIHF1ZXN0aW9uIHByw6ljw6lkZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMrKztcbiAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPXRydWU7Ly8gTGEgcsOpcG9uc2UgZXN0IGNvbnNpZMOpcsOpZSBjb21tZSBib25uZSwganVzcXUnw6AgbGEgcHJlbWnDqHJlIGVycmV1ci4uLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW2l0ZW1dID09IFwidHJ1ZVwiKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZV9cIitpZENob2ljZSkucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKFwiaXNDb3JyZWN0XCIpO1xuICAgICAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicmVzcG9uc2VfXCIraWRDaG9pY2VdID09PSB1bmRlZmluZWQpLy8gPSB1bmUgYm9ubmUgcsOpcG9uc2UgbidhIHBhcyDDqXTDqSBzw6lsZWN0aW9ubsOpZVxuICAgICAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPWZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicmVzcG9uc2VfXCIraWRDaG9pY2VdID09PSBcIm9uXCIpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdvb2RSZXNwb25zZT1mYWxzZTsgLy8gPSB1bmUgbWF1dmFpc2UgcsOpcG9uc2UgYSDDqXTDqSBzw6lsZWN0aW9ubsOpZVxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZV9cIitpZENob2ljZSkucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKFwiaXNOb3RDb3JyZWN0XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFNpIGonYWkgYmllbiByw6lwb25kdSDDoCBsYSBkZXJuacOocmUgcXVlc3Rpb24sIGlsIGZhdXQgbGUgY29tcHRlciBpY2ksIGNhciBvbiBlc3Qgc29ydGkgZGUgbGEgYm91Y2xlIDpcbiAgICAgICAgaWYoZ29vZFJlc3BvbnNlKVxuICAgICAgICAgICAgYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMrKztcblxuICAgICAgICAvLyBBZmZpY2hhZ2UgZHUgcsOpc3VsdGF0LCBzdWl2YW50IHNpIGwndXRpbGlzYXRldXIgZXN0IGNvbm5lY3TDqSBvdSBwYXMgZXQgc29uIHNjb3JlIDpcbiAgICAgICAgbGV0IGdldE91cHV0PWNoZWNrQW5zd2VyT3VwdXQoYW5zd2VyKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgZXN0IGNvbm5lY3TDqSwgb24gcGFzc2Ugc29uIHLDqXN1bHRhdCBhdSBzZXJ2ZXVyIHBvdXIgbGUgc2F1dmVnYXJkZXIuXG4gICAgICAgICAgICBjb25zdCB4aHJTYXZlQW5zd2VyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtncm91cFJvdXRlcytzYXZlQW5zd2Vyc1JvdXRlKTtcbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB4aHJSZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgKHhoclJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXB1dCs9XCI8YnI+XCIreGhyUmVzcG9uc2UubWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyh1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXB1dCs9XCI8YnI+XCIrcmVzcG9uc2VTYXZlZEVycm9yLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFB1aXMgb24gbGUgcmVkaXJpZ2UgdmVycyBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVyZT13aW5kb3cubG9jYXRpb247Ly8gd2luZG93LmxvY2F0aW9uIMOgIGFqb3V0ZXIgcG91ciBuZSBwYXMgcXVpdHRlciBsYSBwYWdlIGVuIG1vZGUgXCJwcmV2aWV3XCIuLi5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJleHBsYW5hdGlvbnNcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgIGFuc3dlci50aW1lRGlmZmVyZW5jZT1nZXRUaW1lRGlmZmVyZW5jZSgpOy8vIE9uIGVuIHByb2ZpdGUgcG91ciBtZXR0cmUgbGVzIHBlbmR1bGVzIMOgIGwnaGV1cmUuXG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLnNlbmQoSlNPTi5zdHJpbmdpZnkoYW5zd2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7ICAgLy8gU2kgaW50ZXJuYXV0ZSBub24gY29ubmVjdMOpLCBvbiBlbnJlZ2lzdHJlIGxlIHLDqXN1bHRhdCBjw7R0w6kgY2xpZW50IHBvdXIgcGVybWV0dHJlIGRlIGxlIHJldHJvdXZlciBhdSBtb21lbnQgZGUgbGEgY3LDqWF0aW9uIGR1IGNvbXB0ZSBvdSBkZSBsYSBjb25uZXhpb24uXG4gICAgICAgICAgICBpZihzYXZlQW5zd2VyKGFuc3dlcikpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIGdldE91cHV0Kz1cIjwvcD48cD5cIit3YW50VG9TYXZlUmVzcG9uc2VzK1wiPC9wPlwiO1xuICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgZ2V0T3VwdXQsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnN1YnNjcmliZUJ0bnNcIikuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIC8vIE1haXMgaW51dGlsZSBkZSBwcm9wb3NlciBkZSBjcsOpZXIgdW4gY29tcHRlIHNpIGxlIHN0b2NrYWdlIGxvY2FsIG5lIGZvbmN0aW9ubmUgcGFzXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGdldE91cHV0LCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgIC8vIFB1aXMgb24gbGUgcmVkaXJpZ2UgdmVycyBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPVwiXCI7XG4gICAgICAgICAgICBjb25zdCBoZXJlPXdpbmRvdy5sb2NhdGlvbjsvLyB3aW5kb3cubG9jYXRpb24gw6AgYWpvdXRlciBwb3VyIG5lIHBhcyBxdWl0dGVyIGxhIHBhZ2UgZW4gbW9kZSBcInByZXZpZXdcIi4uLlxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJyZXNwb25zZVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vICsgQWZmaWNoYWdlIGRlcyB0ZXh0ZXMgZCdleHBsaWNhdGlvbnMgcG91ciBjaGFxdWUgcXVlc3Rpb25cbiAgICAgICAgY29uc3QgZXhwbGFuYXRpb25zPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaGVscFwiKTtcbiAgICAgICAgZm9yKGxldCBpIGluIGV4cGxhbmF0aW9ucylcbiAgICAgICAgICAgIGlmKGV4cGxhbmF0aW9uc1tpXS5zdHlsZSAhPT0gdW5kZWZpbmVkKSAvLyBzaW5vbiwgbGEgY29uc29sZSBhZmZpY2hlIHVuZSBlcnJldXIgXCJUeXBlRXJyb3I6IGV4cGxhbmF0aW9uc1tpXS5zdHlsZSBpcyB1bmRlZmluZWRcIiwgYmllbiBxdWUgdG91dCBmb25jdGlvbm5lICg/KVxuICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uc1tpXS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn0pXG5cbi8vIEZvbmN0aW9uIHbDqXJpZmlhbnQgbGVzIHByw6ljw6lkZW50ZXMgcsOpcG9uc2VzIGRlIGwndXRpbGlzYXRldXIuXG4vLyBVdGlsZSBzaSBjb25uZWN0w6kgbG9ycyBkdSBwcmVtaWVyIGNoYXJnZW1lbnQgZGUgbGEgcGFnZSwgcHVpcyBhcHLDqHMgdW5lIG5vdXZlbGxlIHLDqXBvbnNlLlxuY29uc3QgY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyA9ICh1c2VyKSA9Plxue1xuICAgIGNvbnN0IHhoclByZXZpb3VzUmVzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyUHJldmlvdXNSZXMub3BlbihcIkdFVFwiLCBhcGlVcmwrZ3JvdXBSb3V0ZXMrZ2V0UHJldmlvdXNBbnN3ZXJzK3VzZXIuaWQrXCIvXCIrZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJncm91cElkXCIpLnZhbHVlKTtcbiAgICB4aHJQcmV2aW91c1Jlcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5iUmVzcG9uc2VzPXJlc3BvbnNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNBbnN3ZXJzQ29udGVudD1cIlwiO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zVGl0bGUsIFwic3BhblwiLCBwcmV2aW91c0Fuc3dlcnNUaXRsZS5yZXBsYWNlKFwiI05PTVwiLCB1c2VyLm5hbWUpKTtcbiAgICAgICAgICAgICAgICBpZihuYlJlc3BvbnNlcyE9PTApXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG90TmJRdWVzdGlvbnM9MCwgdG90TmJDb3JyZWN0QW5zd2Vycz0wLCB0b3REdXJhdGlvbj0wLCBtYXBMaW5lQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3ROYlF1ZXN0aW9ucys9cmVzcG9uc2VbaV0ubmJRdWVzdGlvbnM7Ly8gISBvbiBuZSBwZXV0IHNlIGJhc2VyIHN1ciBsYSB2ZXJzaW9uIGFjdHVlbGxlIGR1IHF1aXosIGNhciBsZSBub21icmUgZGUgcXVlc3Rpb25zIGEgcHUgw6l2b2x1ZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3ROYkNvcnJlY3RBbnN3ZXJzKz1yZXNwb25zZVtpXS5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90RHVyYXRpb24rPXJlc3BvbnNlW2ldLmR1cmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwTGluZUNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVBTlNXRVIgOiBkYXRlRm9ybWF0KHJlc3BvbnNlW2ldLmNyZWF0ZWRBdCwgbGFuZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJDT1JSRUNUQU5TV0VSUyA6IHJlc3BvbnNlW2ldLm5iQ29ycmVjdEFuc3dlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJRVUVTVElPTlMgOiByZXNwb25zZVtpXS5uYlF1ZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkdEVVJBVElPTiA6IHJlc3BvbnNlW2ldLmR1cmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbnN3ZXJzQ29udGVudCs9XCI8bGk+XCIrcmVwbGFjZUFsbChwcmV2aW91c0Fuc3dlcnNMaW5lLCBtYXBMaW5lQ29udGVudCkrXCI8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hcExpbmVDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgQVZHRFVSQVRJT04gOiBNYXRoLnJvdW5kKHRvdER1cmF0aW9uL25iUmVzcG9uc2VzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFWR0NPUlJFQ1RBTlNXRVJTIDogTWF0aC5yb3VuZCh0b3ROYkNvcnJlY3RBbnN3ZXJzL3RvdE5iUXVlc3Rpb25zKjEwMClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbnN3ZXJzQ29udGVudD1cIjxoNT5cIityZXBsYWNlQWxsKHByZXZpb3VzQW5zd2Vyc1N0YXRzLCBtYXBMaW5lQ29udGVudCkrXCI8L2g1PlwiK3ByZXZpb3VzQW5zd2Vyc0NvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJ1bFwiLCBwcmV2aW91c0Fuc3dlcnNDb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGV4cGxhbmF0aW9uc0NvbnRlbnQsIFwidWxcIiwgbm9QcmV2aW91c0Fuc3dlcik7XG4gICAgICAgICAgICAgICAgLy8gZGFucyB1biBjYXMgY29tbWUgZGFucyBsJ2F1dHJlLCBib3V0b24gcG91ciByZXZlbmlyIMOgIGwnYWNjdWVpbCBkdSBjb21wdGVcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGV4cGxhbmF0aW9uc0NvbnRlbnQsIFwicFwiLCBcIjxhIGhyZWY9XFxcIi9cIitjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2UrXCJcXFwiIGNsYXNzPVxcXCJidXR0b24gY2FyZGJvYXJkXFxcIj5cIitjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2VUeHQrXCI8L2E+XCIsIFwiXCIsIFtcImJ0blwiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHhoclByZXZpb3VzUmVzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgIHhoclByZXZpb3VzUmVzLnNlbmQoKTtcbn0iLCJjb25zdCBjb25maWdGcm9udEVuZCA9IHJlcXVpcmUoXCIuLi9jb25maWcvZ2VuZXJhbFwiKTtcblxuaW1wb3J0IHsgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHksIHJlcGxhY2VBbGwgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5jb25zdCB0eHQgPSByZXF1aXJlKFwiLi4vLi4vLi4vbGFuZy9cIitjb25maWdGcm9udEVuZC5sYW5nK1wiL2Fuc3dlclwiKTtcblxuLy8gRW5yZWdpc3RyZW1lbnQgY8O0dMOpIGNsaWVudCBkdSBkZXJuaWVyIHLDqXN1bHRhdCDDoCB1biBxdWl6IGVuIGF0dGVuZGFudCBkJ8OqdHJlIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IHNhdmVBbnN3ZXIgPSAoYW5zd2VyKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAge1xuICAgICAgICBzYXZlTG9jYWx5KFwibGFzdEFuc3dlclwiLCBhbnN3ZXIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFJldG91cm5lIHVuIHRleHRlIHN1aXZhbnQgbGUgbm9tYnJlIGRlIGJvbm5lcyByw6lwb25zZXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlck91cHV0ID0gKGFuc3dlcikgPT5cbntcbiAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmF0aW89YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMvYW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICBjb25zdCBtYXBPYmo9XG4gICAgICAgIHtcbiAgICAgICAgICAgIERVUkFUSU9OOiBhbnN3ZXIuZHVyYXRpb24sXG4gICAgICAgICAgICBOQkNPUlJFQ1RBTlNXRVJTOiBhbnN3ZXIubmJDb3JyZWN0QW5zd2VycyxcbiAgICAgICAgICAgIE5CUVVFU1RJT05TOiBhbnN3ZXIubmJRdWVzdGlvbnNcbiAgICAgICAgfVxuICAgICAgICBsZXQgb3V0cHV0PVwiXCI7XG4gICAgICAgIGlmKHJhdGlvIDwgMC40KVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRGYWlsLCBtYXBPYmopO1xuICAgICAgICBlbHNlIGlmKHJhdGlvIDwgMC44KVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0sIG1hcE9iaik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG91dHB1dD1yZXBsYWNlQWxsKHR4dC5jaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcywgbWFwT2JqKTtcbiAgICAgICAgaWYob3V0cHV0KVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIFwiXCI7XG59IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2dyb3VwLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9hbnN3ZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkTWluTGVuZ3RoIiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJjaGVja1Jlc3BvbnNlc091cHV0RmFpbCIsImNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0iLCJjaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcyIsIm5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSIsIm5lZWRJbnRlZ2VyTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1pbk51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWROdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIiwibm9QcmV2aW91c0Fuc3dlciIsInByZXZpb3VzQW5zd2Vyc0xpbmUiLCJwcmV2aW91c0Fuc3dlcnNTdGF0cyIsInByZXZpb3VzQW5zd2Vyc1RpdGxlIiwicmVzcG9uc2VTYXZlZEVycm9yIiwicmVzcG9uc2VTYXZlZE1lc3NhZ2UiLCJzdGF0c1VzZXIiLCJ3YW50VG9TYXZlUmVzcG9uc2VzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJ1c2Vyc0dldENvbmZpZ1VybCIsImNvbmZpZ1RlbXBsYXRlIiwiYnRuU3VibWl0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdlJlc3BvbnNlIiwiZXhwbGFuYXRpb25zVGl0bGUiLCJleHBsYW5hdGlvbnNDb250ZW50IiwibXlGb3JtIiwiY2hyb25vQmVnaW4iLCJiZWdpbkFuc3dlciIsIm5vdyIsInN0eWxlIiwiZGlzcGxheSIsImlzQ29ubmVjdGVkIiwidXNlciIsImluaXRpYWxpc2UiLCJjaGVja1Nlc3Npb24iLCJnZXRMb2NhbHkiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImNoZWNrUHJldmlvdXNSZXNwb25zZXMiLCJsb2FkTWF0b21vIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2IiwiYW5zd2VyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInByZXZlbnREZWZhdWx0IiwiaW5uZXJIVE1MIiwidXNlclJlc3BvbnNlcyIsImdldERhdGFzRnJvbUlucHV0cyIsImR1cmF0aW9uIiwicm91bmQiLCJuYlF1ZXN0aW9ucyIsIm5iQ29ycmVjdEFuc3dlcnMiLCJHcm91cElkIiwiaWRDaG9pY2UiLCJpZFF1ZXN0aW9uIiwiZ29vZFJlc3BvbnNlIiwiaXRlbSIsInN0YXJ0c1dpdGgiLCJsYXN0SW5kZXhPZiIsInBhcmVudE5vZGUiLCJjbGFzc0xpc3QiLCJhZGQiLCJnZXRPdXB1dCIsImNoZWNrQW5zd2VyT3VwdXQiLCJ4aHJTYXZlQW5zd2VyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJ4aHJSZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsIm1lc3NhZ2UiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJoZXJlIiwic2V0UmVxdWVzdEhlYWRlciIsInRva2VuIiwidGltZURpZmZlcmVuY2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInNlbmQiLCJzdHJpbmdpZnkiLCJzYXZlQW5zd2VyIiwiYWRkRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJleHBsYW5hdGlvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwieGhyUHJldmlvdXNSZXMiLCJyZXNwb25zZSIsIm5iUmVzcG9uc2VzIiwicHJldmlvdXNBbnN3ZXJzQ29udGVudCIsInRvdE5iUXVlc3Rpb25zIiwidG90TmJDb3JyZWN0QW5zd2VycyIsInRvdER1cmF0aW9uIiwibWFwTGluZUNvbnRlbnQiLCJEQVRFQU5TV0VSIiwiY3JlYXRlZEF0IiwiTkJDT1JSRUNUQU5TV0VSUyIsIk5CUVVFU1RJT05TIiwiQVZHRFVSQVRJT04iLCJBVkdDT1JSRUNUQU5TV0VSUyIsImNvbmZpZ0Zyb250RW5kIiwidHh0IiwiUXVlc3Rpb25uYWlyZUlkIiwic2F2ZUxvY2FseSIsInJhdGlvIiwiRFVSQVRJT04iLCJvdXRwdXQiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImRhdGFzIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJpbnNlcnRCZWZvcmUiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwiYXNzaWduIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxNQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENBQTlCOztBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJQyxRQUFNLEVBQUUsMkJBRFo7QUFFSUMsU0FBTyxFQUFFLHVCQUZiO0FBR0lDLFdBQVMsRUFBRSxTQUhm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QTBFUDs7QUFDQSxNQUFNcUcsWUFBWSxHQUFHLENBQUNOLGNBQUQsRUFBaUJ4RyxPQUFqQixFQUEwQnlHLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDcFEsMkRBQU8sQ0FBQzJKLE9BQUQsQ0FBWCxFQUNJaUMsb0VBQVUsQ0FBQyxTQUFELEVBQVlqQyxPQUFaLENBQVY7QUFDSixNQUFHLENBQUMzSiwyREFBTyxDQUFDb1EsU0FBRCxDQUFYLEVBQ0l4RSxvRUFBVSxDQUFDLEtBQUQsRUFBUXdFLFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQ3BRLDJEQUFPLENBQUNtUSxjQUFELENBQVgsRUFDSXZHLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQm9ILE1BQWhCLENBQXVCZCxjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL2dyb3VwLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2dyb3VwLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvYW5zd2VyXCI6IFwiLi4vbGFuZy9mci9hbnN3ZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9hbnN3ZXIkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0RmFpbCA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEMnZXN0IGNlcnRhaW4sIHZvdXMgZmVyZXogbWlldXggbGEgcHJvY2hhaW5lIGZvaXMgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0gOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBwYXMgbWFsIGR1IHRvdXQgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQnJhdm8gISBSaWVuIG5lIHZvdXMgw6ljaGFwcGUgIVwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllciBkZSBzZWNvbmRlcy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IG5lIHBldXQgw6p0cmUgYXVzc2kgw6lsZXbDqS5cIixcbiAgICBuZWVkTWluTnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGluZsOpcmlldXIgw6AgMS5cIixcbiAgICBuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIG5lIHBldXQgw6p0cmUgc3Vww6lyaWV1ciBhdSBub21icmUgZGUgcXVlc3Rpb25zLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIDogXCJMYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UgbmUgcGV1dCDDqnRyZSBuw6lnYXRpdmUuXCIsXG4gICAgbm9QcmV2aW91c0Fuc3dlcjogXCJPbiBkaXJhaXQgcXVlIGMnZXN0IGxhIHByZW1pw6hyZSBmb2lzIHF1ZSB2b3VzIHLDqXBvbmRleiDDoCBjZSBxdWl6LiBCb25uZSBsZWN0dXJlICFcIixcbiAgICBwcmV2aW91c0Fuc3dlcnNMaW5lOiBcIkxlIERBVEVBTlNXRVIsIHZvdXMgYXZleiByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgTkJDT1JSRUNUQU5TV0VSUyBxdWVzdGlvbnMgc3VyIE5CUVVFU1RJT05TIGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1N0YXRzOiBcIkVuIG1veWVubmUsIHZvdXMgYXZleiByw6lwb25kdSDDoCBjZSBxdWl6IGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLCBlbiBheWFudCA8Yj5BVkdDT1JSRUNUQU5TV0VSUyAlIGRlIGJvbm5lcyByw6lwb25zZXM8L2I+LlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1RpdGxlOiBcIkJvbmpvdXIgI05PTSwgdm9pY2kgdm9zIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIMOgIGNlIHF1aXpcIixcbiAgICByZXNwb25zZVNhdmVkRXJyb3IgOiBcIkNlcGVuZGFudCB1bmUgZXJyZXVyIGEgw6l0w6kgcmVuY29udHLDqWUgZHVyYW50IGwnZW5yZWdpc3RyZW1lbnQgZGUgdm90cmUgcsOpc3VsdGF0LiA8YSBocmVmPScvI1VSTCc+QWNjw6hkZXIgw6AgdG91cyB2b3MgcXVpenM8L2E+LlwiLFxuICAgIHJlc3BvbnNlU2F2ZWRNZXNzYWdlIDogXCJWb3RyZSByw6lzdWx0YXQgYSDDqXTDqSBlbnJlZ2lzdHLDqS4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICBzdGF0c1VzZXI6IFwiVm91cyBhdmV6IGVucmVnaXN0csOpIDxiPk5CQU5TV0VSUyByw6lwb25zZVMxIMOgIE5CUVVFU1RJT05OQUlSRVMgcXVpelMyIGRpZmbDqXJlbnRTMzwvYj4gc3VyIGxlcyBOQlRPVFFVRVNUSU9OTkFJUkVTIHByb3Bvc8OpUzQgcGFyIGxlIHNpdGUuPGJyPkVuIG1veWVubmUsIHZvdXMgYXZleiBtaXMgQVZHRFVSQVRJT04gc2Vjb25kZXMgw6AgcsOpcG9uZHJlIGV0IGF2ZXogPGI+Y29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIEFWR0NPUlJFQ1RBTlNXRVJTICUgZGVzIHF1ZXN0aW9uczwvYj4uXCIsXG4gICAgd2FudFRvU2F2ZVJlc3BvbnNlczogXCJTaSB2b3VzIGxlIHNvdWhhaXRleiwgdm91cyBwb3V2ZXogPHU+PGI+c2F1dmVnYXJkZXIgdm90cmUgcsOpc3VsdGF0PC9iPjwvdT4gZW4gY3LDqWFudCB2b3RyZSBjb21wdGUgY2ktZGVzc291cy4gQ2VsYSB2b3VzIHBlcm1ldHRyYSBhdXNzaSBkZSA8dT48Yj5yZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIFxcXCJncmFpbmVzIGRlIGN1bHR1cmVcXFwiPC9iPjwvdT4gZGlyZWN0ZW1lbnQgc3VyIHZvdHJlIGUtbWFpbC5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIMOgIHN1cHByaW1lciB1bmUgZm9pcyBxdWUgdG91dCByw6ljdXDDqXJlciBkdSBiYWNrZW5kIDpcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybCA6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHVzZXJzR2V0Q29uZmlnVXJsIDogXCIvdXNlci9nZXRjb25maWdcIixcbiAgICBsYW5nIDogXCJmclwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIEQnQUZGSUNIRVIgRVQgUsOJUE9ORFJFIMOAIFVOIEdST1VQRSBERSBRVUlaU1xuXG4vLy8gSWwgbidlc3QgcGFzIG7DqWNlc3NhaXJlIGQnw6p0cmUgY29ubmVjdMOpIHBvdXIgcsOpcG9uZHJlIGF1IHF1aXogZXQgdm9pciBzb24gcsOpc3VsdGF0LlxuLy8vIE1haXMgc2kgcGFzIGNvbm5lY3TDqSwgb24gcHJvcG9zZSDDoCBsJ2ludGVybmF1dGUgZGUgc2UgY29ubmVjdGVyIG91IGRlIGNyw6llciB1biBjb21wdGUgcG91ciBzYXV2ZWdhcmRlciBzb24gcsOpc3VsdGF0LlxuLy8vIERhbnMgY2UgYnV0IHNvbiByw6lzdWx0YXQgZXN0IHN0b2Nrw6kgZGFucyBzb24gbmF2aWdhdGV1ci5cbi8vLyBTaSBpbCBlc3QgY29ubmVjdMOpLCBsJ2VucmVnaXN0cmVtZW50IGRlIHNvbiByw6lzdWx0YXQgc2UgZmFpdCBhdXRvbWF0aXF1ZW1lbnQgY8O0dMOpIHNlcnZldXIgZXQgc2VzIMOpdmVudHVlbHMgcHLDqWPDqWRlbnRzIHLDqXN1bHRhdHMgc29udCBhZmZpY2jDqXMuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB0aXLDqXMgZHUgYmFja2VuZCA6XG5pbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCB0aGVtZSB9IGZyb20gXCIuLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5pbXBvcnQgeyBnZXRQcmV2aW91c0Fuc3dlcnMsIGdyb3VwUm91dGVzLCBzYXZlQW5zd2Vyc1JvdXRlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9xdWVzdGlvbm5haXJlcy5qc1wiO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7IGNoZWNrQW5zd2VyT3VwdXQsIHNhdmVBbnN3ZXIgfSBmcm9tIFwiLi90b29scy9hbnN3ZXJzLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXRMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBnZXREYXRhc0Zyb21JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdCwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi90b29scy9tYWluXCI7XG5pbXBvcnQgeyBsb2FkTWF0b21vIH0gZnJvbSBcIi4vdG9vbHMvbWF0b21vLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24sIGdldFRpbWVEaWZmZXJlbmNlIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IG5vUHJldmlvdXNBbnN3ZXIsIHByZXZpb3VzQW5zd2Vyc0xpbmUsIHByZXZpb3VzQW5zd2Vyc1N0YXRzLCBwcmV2aW91c0Fuc3dlcnNUaXRsZSwgcmVzcG9uc2VTYXZlZEVycm9yLCB3YW50VG9TYXZlUmVzcG9uc2VzIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2Fuc3dlclwiKTtcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0blN1Ym1pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2hlY2tSZXNwb25zZXNcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBleHBsYW5hdGlvbnNUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXhwbGFuYXRpb25zVGl0bGVcIik7XG5jb25zdCBleHBsYW5hdGlvbnNDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJleHBsYW5hdGlvbnNDb250ZW50XCIpO1xuY29uc3QgbXlGb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJncm91cFwiKTtcblxuLy8gQWZmaWNoZSBsZSBib3V0b24gZGUgc291bWlzc2lvbiArIGTDqWNsZW5jaGUgbGUgY2hyb25vbcOodHJlIG1lc3VyYW50IGxhIGR1csOpZSBkZSBsYSByw6lwb25zZS5cbmxldCBjaHJvbm9CZWdpbj0wO1xuY29uc3QgYmVnaW5BbnN3ZXIgPSAoKSA9Plxue1xuICAgIGNocm9ub0JlZ2luPURhdGUubm93KCk7XG4gICAgYnRuU3VibWl0LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xufVxuXG5sZXQgaXNDb25uZWN0ZWQsIHVzZXI7XG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIFNpIEpTIGFjdGl2w6ksIG9uIGFmZmljaGUgbGUgYm91dG9uIGRlIHNvdW1pc3Npb24gZHUgZm9ybXVsYWlyZSA6XG4gICAgICAgIGJlZ2luQW5zd2VyKCk7XG4gICAgICAgIGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbihbXCJ1c2VyXCJdKTsvLyBcInVzZXJcIiBjYXIgc2V1bHMgbGVzIHV0aWxpc2F0ZXVycyBkZSBiYXNlIHBldXZlbnQgZW5yZWdpc3RyZXIgbGV1cnMgcsOpcG9uc2VzIGF1eCBxdWl6c1xuICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIGVzdCBjb25uZWN0w6kgZXQgYSBkw6lqw6AgcsOpcG9uZHUgw6AgY2UgcXVpeiwgb24gYWZmaWNoZSBzZXMgcHLDqWPDqWRlbnRlcyByw6lwb25zZXMgw6AgbGEgcGxhY2UgZHUgdGV4dGUgc2VydmFudCDDoCBleHBsaXF1ZXIgbGUgdG9wbyBhdXggbm91dmVhdXhcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7Ly8gbGllbiB2ZXJzIGxlIGNvbXB0ZSBhZGFwdMOpIHBvdXIgbGVzIHV0aWxpc2F0ZXVycyBjb25uZWN0w6lzXG4gICAgICAgICAgICBjaGVja1ByZXZpb3VzUmVzcG9uc2VzKHVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuaGVsbG9EZXYoKTtcblxuLy8gVHJhaXRlbWVudCBkZSBsJ2Vudm9pIGRlIGxhIHLDqXBvbnNlIGRlIGwndXRpbGlzYXRldXIgOlxubGV0IGFuc3dlciA9IHt9O1xubXlGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgXG4gICAgICAgIGJ0blN1Ym1pdC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOy8vIHNldWxlbWVudCB1biBlbnZvaSDDoCBsYSBmb2lzLCBTVlAgOilcbiAgICAgICAgZGl2UmVzcG9uc2UuaW5uZXJIVE1MPVwiXCI7Ly8gc3VwcHJpbWUgbGVzIMOpdmVudHVlbHMgbWVzc2FnZXMgZMOpasOgIGFmZmljaMOpcy5cbiAgICAgICAgY29uc3QgdXNlclJlc3BvbnNlcz1nZXREYXRhc0Zyb21JbnB1dHMobXlGb3JtKTtcbiAgICAgICAgYW5zd2VyLmR1cmF0aW9uPU1hdGgucm91bmQoKERhdGUubm93KCktY2hyb25vQmVnaW4pLzEwMDApO1xuICAgICAgICBhbnN3ZXIubmJRdWVzdGlvbnM9MDtcbiAgICAgICAgYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnM9MDtcbiAgICAgICAgYW5zd2VyLkdyb3VwSWQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJncm91cElkXCIpLnZhbHVlO1xuICAgICAgICAvLyBMZXMgcsOpcG9uc2VzIHNvbnQgcmVncm91cMOpZXMgcGFyIHF1ZXN0aW9uLCBkb25jIHF1YW5kIGlkUXVlc3Rpb24gY2hhbmdlLCBvbiBjb25uYcOudCBsZSByw6lzdWx0YXQgcG91ciBsYSBxdWVzdGlvbiBwcsOpY8OpZGVudGUuXG4gICAgICAgIC8vIFBvdXIgcXUndW5lIHLDqXBvbnNlIHNvaXQgYm9ubmUsIGlsIGZhdXQgY29jaGVyIHRvdXRlcyBsZXMgYm9ubmVzIHLDqXBvbnNlcyAoc2kgUUNNKSDDoCBsYSBxdWVzdGlvbiBFVCBjb2NoZXIgYXVjdW5lIGRlcyBtYXV2YWlzZXMuXG4gICAgICAgIGxldCBpZENob2ljZSwgaWRRdWVzdGlvbj1cIlwiLCBnb29kUmVzcG9uc2U9ZmFsc2U7XG4gICAgICAgIGZvcihsZXQgaXRlbSBpbiB1c2VyUmVzcG9uc2VzKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZihpdGVtLnN0YXJ0c1dpdGgoXCJpc0NvcnJlY3RfcmVzcG9uc2VfXCIpKS8vID0gTm91dmVsbGUgcsOpcG9uc2UgcG9zc2libGUuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWRDaG9pY2UgPSBpdGVtLnN1YnN0cmluZyhpdGVtLmxhc3RJbmRleE9mKFwiX1wiKSArIDEpO1xuICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbXCJxdWVzdGlvbl9pZF9yZXNwb25zZV9cIitpZENob2ljZV0gIT0gaWRRdWVzdGlvbikgLy8gPSBvbiBjb21tZW5jZSDDoCB0cmFpdGVyIHVuZSBub3V2ZWxsZSBxdWVzdGlvbi5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkUXVlc3Rpb249dXNlclJlc3BvbnNlc1tcInF1ZXN0aW9uX2lkX3Jlc3BvbnNlX1wiK2lkQ2hvaWNlXTtcbiAgICAgICAgICAgICAgICAgICAgYW5zd2VyLm5iUXVlc3Rpb25zKys7XG4gICAgICAgICAgICAgICAgICAgIGlmKGdvb2RSZXNwb25zZSkgLy8gPSBwYXMgZCdlcnJldXIgw6AgbGEgcXVlc3Rpb24gcHLDqWPDqWRlbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXIubmJDb3JyZWN0QW5zd2VycysrO1xuICAgICAgICAgICAgICAgICAgICBnb29kUmVzcG9uc2U9dHJ1ZTsvLyBMYSByw6lwb25zZSBlc3QgY29uc2lkw6lyw6llIGNvbW1lIGJvbm5lLCBqdXNxdSfDoCBsYSBwcmVtacOocmUgZXJyZXVyLi4uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbaXRlbV0gPT0gXCJ0cnVlXCIpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlX1wiK2lkQ2hvaWNlKS5wYXJlbnROb2RlLmNsYXNzTGlzdC5hZGQoXCJpc0NvcnJlY3RcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbXCJyZXNwb25zZV9cIitpZENob2ljZV0gPT09IHVuZGVmaW5lZCkvLyA9IHVuZSBib25uZSByw6lwb25zZSBuJ2EgcGFzIMOpdMOpIHPDqWxlY3Rpb25uw6llXG4gICAgICAgICAgICAgICAgICAgICAgICBnb29kUmVzcG9uc2U9ZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbXCJyZXNwb25zZV9cIitpZENob2ljZV0gPT09IFwib25cIilcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPWZhbHNlOyAvLyA9IHVuZSBtYXV2YWlzZSByw6lwb25zZSBhIMOpdMOpIHPDqWxlY3Rpb25uw6llXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlX1wiK2lkQ2hvaWNlKS5wYXJlbnROb2RlLmNsYXNzTGlzdC5hZGQoXCJpc05vdENvcnJlY3RcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2kgaidhaSBiaWVuIHLDqXBvbmR1IMOgIGxhIGRlcm5pw6hyZSBxdWVzdGlvbiwgaWwgZmF1dCBsZSBjb21wdGVyIGljaSwgY2FyIG9uIGVzdCBzb3J0aSBkZSBsYSBib3VjbGUgOlxuICAgICAgICBpZihnb29kUmVzcG9uc2UpXG4gICAgICAgICAgICBhbnN3ZXIubmJDb3JyZWN0QW5zd2VycysrO1xuXG4gICAgICAgIC8vIEFmZmljaGFnZSBkdSByw6lzdWx0YXQsIHN1aXZhbnQgc2kgbCd1dGlsaXNhdGV1ciBlc3QgY29ubmVjdMOpIG91IHBhcyBldCBzb24gc2NvcmUgOlxuICAgICAgICBsZXQgZ2V0T3VwdXQ9Y2hlY2tBbnN3ZXJPdXB1dChhbnN3ZXIpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gU2kgbCd1dGlsaXNhdGV1ciBlc3QgY29ubmVjdMOpLCBvbiBwYXNzZSBzb24gcsOpc3VsdGF0IGF1IHNlcnZldXIgcG91ciBsZSBzYXV2ZWdhcmRlci5cbiAgICAgICAgICAgIGNvbnN0IHhoclNhdmVBbnN3ZXIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIub3BlbihcIlBPU1RcIiwgYXBpVXJsK2dyb3VwUm91dGVzK3NhdmVBbnN3ZXJzUm91dGUpO1xuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHhoclJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMSAmJiAoeGhyUmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldE91cHV0Kz1cIjxicj5cIit4aHJSZXNwb25zZS5tZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1ByZXZpb3VzUmVzcG9uc2VzKHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldE91cHV0Kz1cIjxicj5cIityZXNwb25zZVNhdmVkRXJyb3IucmVwbGFjZShcIiNVUkxcIiwgY29uZmlnVGVtcGxhdGUudXNlckhvbWVQYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHVpcyBvbiBsZSByZWRpcmlnZSB2ZXJzIHNvbiByw6lzdWx0YXQgOlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZXJlPXdpbmRvdy5sb2NhdGlvbjsvLyB3aW5kb3cubG9jYXRpb24gw6AgYWpvdXRlciBwb3VyIG5lIHBhcyBxdWl0dGVyIGxhIHBhZ2UgZW4gbW9kZSBcInByZXZpZXdcIi4uLlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cImV4cGxhbmF0aW9uc1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgYW5zd2VyLnRpbWVEaWZmZXJlbmNlPWdldFRpbWVEaWZmZXJlbmNlKCk7Ly8gT24gZW4gcHJvZml0ZSBwb3VyIG1ldHRyZSBsZXMgcGVuZHVsZXMgw6AgbCdoZXVyZS5cbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIuc2VuZChKU09OLnN0cmluZ2lmeShhbnN3ZXIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHsgICAvLyBTaSBpbnRlcm5hdXRlIG5vbiBjb25uZWN0w6ksIG9uIGVucmVnaXN0cmUgbGUgcsOpc3VsdGF0IGPDtHTDqSBjbGllbnQgcG91ciBwZXJtZXR0cmUgZGUgbGUgcmV0cm91dmVyIGF1IG1vbWVudCBkZSBsYSBjcsOpYXRpb24gZHUgY29tcHRlIG91IGRlIGxhIGNvbm5leGlvbi5cbiAgICAgICAgICAgIGlmKHNhdmVBbnN3ZXIoYW5zd2VyKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgZ2V0T3VwdXQrPVwiPC9wPjxwPlwiK3dhbnRUb1NhdmVSZXNwb25zZXMrXCI8L3A+XCI7XG4gICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBnZXRPdXB1dCwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc3Vic2NyaWJlQnRuc1wiKS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgLy8gTWFpcyBpbnV0aWxlIGRlIHByb3Bvc2VyIGRlIGNyw6llciB1biBjb21wdGUgc2kgbGUgc3RvY2thZ2UgbG9jYWwgbmUgZm9uY3Rpb25uZSBwYXNcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgZ2V0T3VwdXQsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgLy8gUHVpcyBvbiBsZSByZWRpcmlnZSB2ZXJzIHNvbiByw6lzdWx0YXQgOlxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjtcbiAgICAgICAgICAgIGNvbnN0IGhlcmU9d2luZG93LmxvY2F0aW9uOy8vIHdpbmRvdy5sb2NhdGlvbiDDoCBham91dGVyIHBvdXIgbmUgcGFzIHF1aXR0ZXIgbGEgcGFnZSBlbiBtb2RlIFwicHJldmlld1wiLi4uXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cInJlc3BvbnNlXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gKyBBZmZpY2hhZ2UgZGVzIHRleHRlcyBkJ2V4cGxpY2F0aW9ucyBwb3VyIGNoYXF1ZSBxdWVzdGlvblxuICAgICAgICBjb25zdCBleHBsYW5hdGlvbnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5oZWxwXCIpO1xuICAgICAgICBmb3IobGV0IGkgaW4gZXhwbGFuYXRpb25zKVxuICAgICAgICAgICAgaWYoZXhwbGFuYXRpb25zW2ldLnN0eWxlICE9PSB1bmRlZmluZWQpIC8vIHNpbm9uLCBsYSBjb25zb2xlIGFmZmljaGUgdW5lIGVycmV1ciBcIlR5cGVFcnJvcjogZXhwbGFuYXRpb25zW2ldLnN0eWxlIGlzIHVuZGVmaW5lZFwiLCBiaWVuIHF1ZSB0b3V0IGZvbmN0aW9ubmUgKD8pXG4gICAgICAgICAgICAgICAgZXhwbGFuYXRpb25zW2ldLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSlcblxuLy8gRm9uY3Rpb24gdsOpcmlmaWFudCBsZXMgcHLDqWPDqWRlbnRlcyByw6lwb25zZXMgZGUgbCd1dGlsaXNhdGV1ci5cbi8vIFV0aWxlIHNpIGNvbm5lY3TDqSBsb3JzIGR1IHByZW1pZXIgY2hhcmdlbWVudCBkZSBsYSBwYWdlLCBwdWlzIGFwcsOocyB1bmUgbm91dmVsbGUgcsOpcG9uc2UuXG5jb25zdCBjaGVja1ByZXZpb3VzUmVzcG9uc2VzID0gKHVzZXIpID0+XG57XG4gICAgY29uc3QgeGhyUHJldmlvdXNSZXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHJQcmV2aW91c1Jlcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtncm91cFJvdXRlcytnZXRQcmV2aW91c0Fuc3dlcnMrdXNlci5pZCtcIi9cIitkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdyb3VwSWRcIikudmFsdWUpO1xuICAgIHhoclByZXZpb3VzUmVzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmJSZXNwb25zZXM9cmVzcG9uc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Fuc3dlcnNDb250ZW50PVwiXCI7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChleHBsYW5hdGlvbnNUaXRsZSwgXCJzcGFuXCIsIHByZXZpb3VzQW5zd2Vyc1RpdGxlLnJlcGxhY2UoXCIjTk9NXCIsIHVzZXIubmFtZSkpO1xuICAgICAgICAgICAgICAgIGlmKG5iUmVzcG9uc2VzIT09MClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3ROYlF1ZXN0aW9ucz0wLCB0b3ROYkNvcnJlY3RBbnN3ZXJzPTAsIHRvdER1cmF0aW9uPTAsIG1hcExpbmVDb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdE5iUXVlc3Rpb25zKz1yZXNwb25zZVtpXS5uYlF1ZXN0aW9uczsvLyAhIG9uIG5lIHBldXQgc2UgYmFzZXIgc3VyIGxhIHZlcnNpb24gYWN0dWVsbGUgZHUgcXVpeiwgY2FyIGxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYSBwdSDDqXZvbHVlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdE5iQ29ycmVjdEFuc3dlcnMrPXJlc3BvbnNlW2ldLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3REdXJhdGlvbis9cmVzcG9uc2VbaV0uZHVyYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5lQ29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURUFOU1dFUiA6IGRhdGVGb3JtYXQocmVzcG9uc2VbaV0uY3JlYXRlZEF0LCBsYW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQkNPUlJFQ1RBTlNXRVJTIDogcmVzcG9uc2VbaV0ubmJDb3JyZWN0QW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQlFVRVNUSU9OUyA6IHJlc3BvbnNlW2ldLm5iUXVlc3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWR0RVUkFUSU9OIDogcmVzcG9uc2VbaV0uZHVyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Fuc3dlcnNDb250ZW50Kz1cIjxsaT5cIityZXBsYWNlQWxsKHByZXZpb3VzQW5zd2Vyc0xpbmUsIG1hcExpbmVDb250ZW50KStcIjwvbGk+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbWFwTGluZUNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBBVkdEVVJBVElPTiA6IE1hdGgucm91bmQodG90RHVyYXRpb24vbmJSZXNwb25zZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVZHQ09SUkVDVEFOU1dFUlMgOiBNYXRoLnJvdW5kKHRvdE5iQ29ycmVjdEFuc3dlcnMvdG90TmJRdWVzdGlvbnMqMTAwKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Fuc3dlcnNDb250ZW50PVwiPGg1PlwiK3JlcGxhY2VBbGwocHJldmlvdXNBbnN3ZXJzU3RhdHMsIG1hcExpbmVDb250ZW50KStcIjwvaDU+XCIrcHJldmlvdXNBbnN3ZXJzQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChleHBsYW5hdGlvbnNDb250ZW50LCBcInVsXCIsIHByZXZpb3VzQW5zd2Vyc0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJ1bFwiLCBub1ByZXZpb3VzQW5zd2VyKTtcbiAgICAgICAgICAgICAgICAvLyBkYW5zIHVuIGNhcyBjb21tZSBkYW5zIGwnYXV0cmUsIGJvdXRvbiBwb3VyIHJldmVuaXIgw6AgbCdhY2N1ZWlsIGR1IGNvbXB0ZVxuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJwXCIsIFwiPGEgaHJlZj1cXFwiL1wiK2NvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZStcIlxcXCIgY2xhc3M9XFxcImJ1dHRvbiBjYXJkYm9hcmRcXFwiPlwiK2NvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZVR4dCtcIjwvYT5cIiwgXCJcIiwgW1wiYnRuXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyUHJldmlvdXNSZXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgeGhyUHJldmlvdXNSZXMuc2VuZCgpO1xufSIsImNvbnN0IGNvbmZpZ0Zyb250RW5kID0gcmVxdWlyZShcIi4uL2NvbmZpZy9nZW5lcmFsXCIpO1xuXG5pbXBvcnQgeyBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmNvbnN0IHR4dCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9sYW5nL1wiK2NvbmZpZ0Zyb250RW5kLmxhbmcrXCIvYW5zd2VyXCIpO1xuXG4vLyBFbnJlZ2lzdHJlbWVudCBjw7R0w6kgY2xpZW50IGR1IGRlcm5pZXIgcsOpc3VsdGF0IMOgIHVuIHF1aXogZW4gYXR0ZW5kYW50IGQnw6p0cmUgY29ubmVjdMOpXG5leHBvcnQgY29uc3Qgc2F2ZUFuc3dlciA9IChhbnN3ZXIpID0+XG57XG4gICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICB7XG4gICAgICAgIHNhdmVMb2NhbHkoXCJsYXN0QW5zd2VyXCIsIGFuc3dlcik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy8gUmV0b3VybmUgdW4gdGV4dGUgc3VpdmFudCBsZSBub21icmUgZGUgYm9ubmVzIHLDqXBvbnNlc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyT3VwdXQgPSAoYW5zd2VyKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykpXG4gICAge1xuICAgICAgICBjb25zdCByYXRpbz1hbnN3ZXIubmJDb3JyZWN0QW5zd2Vycy9hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgIGNvbnN0IG1hcE9iaj1cbiAgICAgICAge1xuICAgICAgICAgICAgRFVSQVRJT046IGFuc3dlci5kdXJhdGlvbixcbiAgICAgICAgICAgIE5CQ09SUkVDVEFOU1dFUlM6IGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzLFxuICAgICAgICAgICAgTkJRVUVTVElPTlM6IGFuc3dlci5uYlF1ZXN0aW9uc1xuICAgICAgICB9XG4gICAgICAgIGxldCBvdXRwdXQ9XCJcIjtcbiAgICAgICAgaWYocmF0aW8gPCAwLjQpXG4gICAgICAgICAgICBvdXRwdXQ9cmVwbGFjZUFsbCh0eHQuY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwsIG1hcE9iaik7XG4gICAgICAgIGVsc2UgaWYocmF0aW8gPCAwLjgpXG4gICAgICAgICAgICBvdXRwdXQ9cmVwbGFjZUFsbCh0eHQuY2hlY2tSZXNwb25zZXNPdXB1dE1lZGl1bSwgbWFwT2JqKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzLCBtYXBPYmopO1xuICAgICAgICBpZihvdXRwdXQpXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gXCJcIjtcbn0iLCIvLyBGT05DVElPTlMgVVRJTEVTIEFVIFNUT0NLQUdFIExPQ0FMIChTRVNTSU9OLCBDT09LSUVTLCBJTkRFWERCLCBFVEMuKVxuLy8gUmV2ZW5pciBwb3VyIGfDqXJlciBsZSBjYXMgb8O5IGxvY2FsLnN0b3JhZ2Ugbidlc3QgcGFzIGNvbm51IHBvdXIgdXRpbGlzZXIgY29va2llXG4gICAgXG5leHBvcnQgY29uc3Qgc2F2ZUxvY2FseSA9IChuYW1lLCBkYXRhKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2FseSA9IChuYW1lLCBqc29uPWZhbHNlKSA9Plxue1xuICAgIGlmKGpzb24pXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxvY2FseSA9IChuYW1lKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50ID0gKGVsdFBhcmVudCwgZWx0VHlwZSwgZWx0Q29udGVudD1cIlwiLCBlbHRJZD1cIlwiLCBlbHRDbGFzcz1bXSwgZWx0QXR0cmlidXRlcz17fSwgcmVwbGFjZT10cnVlKSA9Plxue1xuICAgIGlmKGlzRW1wdHkoZWx0VHlwZSkgfHwgaXNFbXB0eShlbHRQYXJlbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsdFR5cGUpO1xuICAgICAgICBcbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0SWQpKS8vIHRlc3RlciBzaSBsJ2lkIG4nZXN0IHBhcyBkw6lqw6AgdXRpbGlzw6kgZGFucyBsZSBET00gP1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pZD1lbHRJZDtcblxuICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsdENsYXNzKSAmJiBlbHRDbGFzcy5sZW5ndGghPTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiBlbHRDbGFzcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWx0Q2xhc3NbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodHlwZW9mIGVsdEF0dHJpYnV0ZXMgPT09IFwib2JqZWN0XCIpIC8vICEhIHRvdXMgbGVzIG9iamV0cyBuZSBzb250IHBhcyBva1xuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGF0dHJpYnV0TmFtZSBpbiBlbHRBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0TmFtZSwgZWx0QXR0cmlidXRlc1thdHRyaWJ1dE5hbWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdENvbnRlbnQpKVxuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUw9ZWx0Q29udGVudC5yZXBsYWNlKC9cXG4vZyxcIjxicj5cIik7Ly8gaW5uZXJIVE1MIHBlcm1ldCBkJ2Fqb3V0ZXIgZHUgdGV4dGUgYXlhbnQgbHVpLW3Dqm1lIGRlcyBiYWxpc2VzLCBldGMuXG4gICAgICAgICAgICBcbiAgICAgICAgaWYocmVwbGFjZSlcbiAgICAgICAgICAgIGVsdFBhcmVudC5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgZWx0UGFyZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpO1xuICAgIH0gICAgXG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3Qgc2V0QXR0cmlidXRlc1RvSW5wdXRzID0gKGlucHV0c0NvbmYsIG15Rm9ybSkgPT5cbntcbiAgICBmb3IobGV0IGkgaW4gbXlGb3JtLmVsZW1lbnRzKVxuICAgIHtcbiAgICAgICAgaWYoIWlzRW1wdHkobXlGb3JtLmVsZW1lbnRzW2ldLmlkKSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGlkSW5wdXQ9bXlGb3JtLmVsZW1lbnRzW2ldLmlkO1xuICAgICAgICAgICAgaWYoaW5wdXRzQ29uZltpZElucHV0XSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRIVE1MPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkSW5wdXQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGF0dHJpYnV0ZSBpbiBpbnB1dHNDb25mW2lkSW5wdXRdKVxuICAgICAgICAgICAgICAgICAgICBpbnB1dEhUTUwuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgaW5wdXRzQ29uZltpZElucHV0XVthdHRyaWJ1dGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gUsOpY3Vww6hyZSB0b3V0ZXMgbGVzIHZhbGV1cnMgZGUgY2hhbXBzIGVuIG9tZXR0YW50IGxlcyBjaGVja2JveCBub24gY29jaMOpZXMsIGV0Yy5cbmV4cG9ydCBjb25zdCBnZXREYXRhc0Zyb21JbnB1dHMgPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGRhdGFzPXt9O1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgICAgIGRhdGFzW2VudHJpZVswXV09ZW50cmllWzFdO1xuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gVmlkZSB0b3VzIGxlcyBjaGFtcHMgZCd1biBmb3JtdWxhaXJlLCB5IGNvbXByaXMgaGlkZGVuLCBjaGVja2JveCwgZXRjLlxuLy8gUmV2b2lyIHBvdXIgbGVzIHNlbGVjdFxuZXhwb3J0IGNvbnN0IGVtcHlGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICB7XG4gICAgICAgIGlmKG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwiY2hlY2tib3hcIiB8fCBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cInJhZGlvXCIpXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS5jaGVja2VkPWZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS52YWx1ZT1cIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIFZpZGUgZXQgY2FjaGUgbGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGVtcHlBbmRIaWRlRm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgZW1weUZvcm0obXlGb3JtKTtcbiAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbn0iLCJpbXBvcnQgeyBtYXRvbW8gfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL21hdG9tby5qc1wiO1xuXG4vLyBGb25jdGlvbiBjaGFyZ2VhbnQgbGUgY29kZSBtYXRvbW9cbmV4cG9ydCBjb25zdCBsb2FkTWF0b21vID0gKCkgPT5cbntcbiAgICAvLyBjaGFyZ2VtZW50IGRlIG1hdG9tb1xuICAgIHZhciBfcGFxID0gd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICAvL2Fqb3V0IGNuaWwgIDpcbiAgICBfcGFxLnB1c2goW2Z1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbm93VHMgPSBNYXRoLnJvdW5kKG5vdy5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgICAgICAgIHZpc2l0b3JJbmZvID0gc2VsZi5nZXRWaXNpdG9ySW5mbygpO1xuICAgICAgICAgICAgdmFyIGNyZWF0ZVRzID0gcGFyc2VJbnQodmlzaXRvckluZm9bMl0pO1xuICAgICAgICAgICAgdmFyIGNvb2tpZVRpbWVvdXQgPSAzMzY5NjAwMDsgLy8gMTMgbW9pcyBlbiBzZWNvbmRlc1xuICAgICAgICAgICAgdmFyIG9yaWdpbmFsVGltZW91dCA9IGNyZWF0ZVRzICsgY29va2llVGltZW91dCAtIG5vd1RzO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZpc2l0b3JDb29raWVUaW1lb3V0KCBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KCkgKTtcbiAgICB9XSk7XG4gICAgLy8tLWZpbiBham91dCBjbmlsXG4gICAgX3BhcS5wdXNoKFsndHJhY2tQYWdlVmlldyddKTtcbiAgICBfcGFxLnB1c2goWydlbmFibGVMaW5rVHJhY2tpbmcnXSk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdT1tYXRvbW8udXJsO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRUcmFja2VyVXJsJywgdSsnbWF0b21vLnBocCddKTtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0U2l0ZUlkJywgbWF0b21vLnNpdGVJZF0pO1xuICAgICAgICB2YXIgZD1kb2N1bWVudCwgZz1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLCBzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgICBnLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7IGcuYXN5bmM9dHJ1ZTsgZy5zcmM9dSsnbWF0b21vLmpzJzsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuICAgIH0pKCk7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/groupElement.app.js b/front/public/JS/groupElement.app.js index 774d19d..cf8c4fb 100644 --- a/front/public/JS/groupElement.app.js +++ b/front/public/JS/groupElement.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -605,99 +614,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1440,4 +1428,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9ncm91cEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJjb25maWdVc2VycyIsImJ0blN1Ym1pdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZSZXNwb25zZSIsImVtYWlsSW5wdXQiLCJteUZvcm0iLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJsb2FkTWF0b21vIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwic3R5bGUiLCJkaXNwbGF5IiwiZSIsImFkZEVsZW1lbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWxsb0RldiIsImFkZEV2ZW50TGlzdGVuZXIiLCJpbm5lckhUTUwiLCJlbWFpbFZhbHVlIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsImZyZWUiLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiZGF0YXMiLCJlbWFpbFRlc3QiLCJzZW5kIiwic3RyaW5naWZ5IiwicHJldmVudERlZmF1bHQiLCJtZXNzYWdlIiwicmVtb3ZlTG9jYWx5IiwiZXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0RGF0YXNGcm9tSW5wdXRzIiwidGltZURpZmZlcmVuY2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsImNoZWNrQW5zd2VyRGF0YXMiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJhcHBlbmRDaGlsZCIsImxvZyIsImxpbmsiLCJob21lUGFnZSIsImlucHV0c0NvbmYiLCJlbGVtZW50cyIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsImVtcHlGb3JtIiwidHlwZSIsImNoZWNrZWQiLCJlbXB5QW5kSGlkZUZvcm0iLCJfcGFxIiwid2luZG93IiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJwYXJzZUludCIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsInMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImFzeW5jIiwic3JjIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsInRva2VuIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJv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QUFELENBQVo7QUFDQXdGLHdCQUFZLENBQUNOLGNBQUQsRUFBaUJuRixPQUFqQixFQUEwQm9GLFNBQTFCLENBQVo7QUFDQUUsbUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFNBNUNEOztBQTZDQXpHLFdBQUcsQ0FBQ3FILE9BQUosR0FBYyxNQUFNWCxNQUFNLENBQUMxRyxHQUFHLENBQUNzSCxVQUFMLENBQTFCOztBQUNBdEgsV0FBRyxDQUFDZ0IsSUFBSjtBQUNIO0FBQ0o7QUFDSixHQXRFTSxDQUFQO0FBdUVILENBekVNLEMsQ0EwRVA7O0FBQ0EsTUFBTTRGLFlBQVksR0FBRyxDQUFDTixjQUFELEVBQWlCbkYsT0FBakIsRUFBMEJvRixTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQ3hOLDJEQUFPLENBQUNvSSxPQUFELENBQVgsRUFDSVMsb0VBQVUsQ0FBQyxTQUFELEVBQVlULE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ3BJLDJEQUFPLENBQUN3TixTQUFELENBQVgsRUFDSTNFLG9FQUFVLENBQUMsS0FBRCxFQUFRMkUsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDeE4sMkRBQU8sQ0FBQ3VOLGNBQUQsQ0FBWCxFQUNJdEMsTUFBTSxDQUFDa0QsUUFBUCxDQUFnQkUsTUFBaEIsQ0FBdUJkLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvZ3JvdXBFbGVtZW50LmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2dyb3VwRWxlbWVudC5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBQQUdFIEFGRklDSEFOVCBMJ8OJTMOJTUVOVCBEJ1VOIEdST1VQRSBERSBRVUlaIEVUIFBST1BPU0FOVCBERSBDUsOJRVIgU09OIENPTVBURSBERSBNQU5Jw4hSRSBTSU1QTElGScOJRVxuXG4vLy8gTCd1dGlsaXNhdGV1ciBwZXV0IGF2b2lyIHLDqXBvbmR1IMOgIHVuIHF1aXogYXZhbnQgZGUgbGFuY2VyIGxhIGNyw6lhdGlvbiBkZSBzb24gY29tcHRlXG4vLy8gRGFucyBjZSBjYXMgaWwgZmF1dCBlbnJlZ2lzdHJlciBzb24gcsOpc3VsdGF0IGVuIG3Dqm1lIHRlbXBzIHF1ZSBsZXMgaW5mb3JtYXRpb25zIGRlIHNvbiBjb21wdGVcblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpOy8vIGJlc29pbiBkZSB0b3V0ZXMgbGVzIGTDqWNsYXJhdGlvbnMsIGNhciBhcHBlbCBkeW5hbWlxdWUgOiBjb25maWdUZW1wbGF0ZVtob21lUGFnZV1cbmNvbnN0IGNvbmZpZ1VzZXJzID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTsvLyBpZGVtIHBvdXIgY29uZmlndXJlciBmb3JtdWxhaXJlXG5cbi8vIEltcG9ydGF0aW9uIGRlcyBmb25jdGlvbnMgdXRpbGVzIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGNoZWNrQW5zd2VyRGF0YXMsIGNoZWNrU2Vzc2lvbiwgZ2V0VGltZURpZmZlcmVuY2UgfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgbmVlZFVuaXF1ZUVtYWlsIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBidG5TdWJtaXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJtaXREYXRhc1wiKTtcbmNvbnN0IGRpdlJlc3BvbnNlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBlbWFpbElucHV0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxcIik7XG5jb25zdCBteUZvcm09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpcHRpb25cIik7XG5cbi8vIFRlc3QgZGUgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgKyBhZmZpY2hhZ2UgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIDpcbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgbGV0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpLCB1c2VyO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlQWNjb3VudExpbmsodXNlci5zdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKTsvLyBsaWVuIHZlcnMgbGUgY29tcHRlIGFkYXB0w6kgcG91ciBsZXMgdXRpbGlzYXRldXJzIGNvbm5lY3TDqXNcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdVc2VycywgbXlGb3JtKTtcbiAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuaGVsbG9EZXYoKTtcblxuLy8gVGVzdCBzaSBsJ2UtbWFpbCBzYWlzaSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciB1biBhdXRyZSBjb21wdGUuXG4vLyBTaSBjJ2VzdCBsZSBjYXMsIGxhIHZhbGlkYXRpb24gZHUgZm9ybXVsYWlyZSBlc3QgYmxvcXXDqWUuXG5lbWFpbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBmdW5jdGlvbihlKVxue1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxNZXNzYWdlXCIpLmlubmVySFRNTD1cIlwiOy8vIHBvdXIgc3VwcHJpbWVyIGwnw6l2ZW50dWVsIG1lc3NhZ2UgZCdlcnJldXIgZMOpasOgIGFmZmljaMOpXG59KTtcbmVtYWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgZnVuY3Rpb24oZSlcbntcbiAgICBjb25zdCBlbWFpbFZhbHVlPWVtYWlsSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmKGVtYWlsVmFsdWUhPT1cIlwiKVxuICAgIHtcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5jaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuZnJlZSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmZyZWUgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsTWVzc2FnZVwiKSwgXCJkaXZcIiwgbmVlZFVuaXF1ZUVtYWlsLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICBidG5TdWJtaXQuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnRuU3VibWl0LnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgY29uc3QgZGF0YXM9eyBlbWFpbFRlc3Q6ZW1haWxWYWx1ZSB9O1xuICAgICAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgIH1cbn0pO1xuXG4vLyBUcmFpdGVtZW50IGRlIGwnZW52b2kgZGVzIGRvbm7DqWVzIGQnaW5zY3JpcHRpb24gOlxubXlGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgIFxuICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLnN1YnNjcmliZVJvdXRlKTtcbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISEgaW1wb3J0YW50LCBwb3VyIG5lIHBhcyBlbnJlZ2lzdGVyIHBsdXNpZXVycyBmb2lzIGxlIHLDqXN1bHRhdC5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhteUZvcm0pO1xuICAgICAgICBpZihkYXRhcylcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMudGltZURpZmZlcmVuY2U9Z2V0VGltZURpZmZlcmVuY2UoY29uZmlnVXNlcnMpO1xuICAgICAgICAgICAgLy8gU2kgbCd1dGlsaXNhdGV1ciBhIHByw6ljw6lkZW1lbnQgcsOpcG9uZHUgw6AgdW4gcXVpeiwgb24gYWpvdXRlIGxlcyBkb25uw6llcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgIGRhdGFzPWNoZWNrQW5zd2VyRGF0YXMoZGF0YXMpO1xuICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9ncm91cEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImNvbmZpZ1VzZXJzIiwiYnRuU3VibWl0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdlJlc3BvbnNlIiwiZW1haWxJbnB1dCIsIm15Rm9ybSIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsInVzZXIiLCJnZXRMb2NhbHkiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImxvYWRNYXRvbW8iLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJzdHlsZSIsImRpc3BsYXkiLCJlIiwiYWRkRWxlbWVudCIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2IiwiYWRkRXZlbnRMaXN0ZW5lciIsImlubmVySFRNTCIsImVtYWlsVmFsdWUiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwiZnJlZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInNldFJlcXVlc3RIZWFkZXIiLCJkYXRhcyIsImVtYWlsVGVzdCIsInNlbmQiLCJzdHJpbmdpZnkiLCJwcmV2ZW50RGVmYXVsdCIsIm1lc3NhZ2UiLCJyZW1vdmVMb2NhbHkiLCJlcnJvcnMiLCJBcnJheSIsImlzQXJyYXkiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ0aW1lRGlmZmVyZW5jZSIsImdldFRpbWVEaWZmZXJlbmNlIiwiY2hlY2tBbnN3ZXJEYXRhcyIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJ0eXBlIiwiY2hlY2tlZCIsImVtcHlBbmRIaWRlRm9ybSIsIl9wYXEiLCJ3aW5kb3ciLCJwdXNoIiwic2VsZiIsImdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQiLCJub3ciLCJub3dUcyIsInJvdW5kIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsImxvY2F0aW9uIiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsTUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLE1BQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQyxxREFBRCxDQUE5Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSUMsUUFBTSxFQUFFLDJCQURaO0FBRUlDLFNBQU8sRUFBRSx1QkFGYjtBQUdJQyxXQUFTLEVBQUUsU0FIZjtBQUlJQyxZQUFVLEVBQUUsbUJBSmhCO0FBS0lDLFlBQVUsRUFBRSxtQkFMaEI7QUFNSUMsYUFBVyxFQUFFLHVCQU5qQjtBQU9JQyxXQUFT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ZmlsZSI6Ii4vSlMvZ3JvdXBFbGVtZW50LmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2dyb3VwRWxlbWVudC5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBQQUdFIEFGRklDSEFOVCBMJ8OJTMOJTUVOVCBEJ1VOIEdST1VQRSBERSBRVUlaIEVUIFBST1BPU0FOVCBERSBDUsOJRVIgU09OIENPTVBURSBERSBNQU5Jw4hSRSBTSU1QTElGScOJRVxuXG4vLy8gTCd1dGlsaXNhdGV1ciBwZXV0IGF2b2lyIHLDqXBvbmR1IMOgIHVuIHF1aXogYXZhbnQgZGUgbGFuY2VyIGxhIGNyw6lhdGlvbiBkZSBzb24gY29tcHRlXG4vLy8gRGFucyBjZSBjYXMgaWwgZmF1dCBlbnJlZ2lzdHJlciBzb24gcsOpc3VsdGF0IGVuIG3Dqm1lIHRlbXBzIHF1ZSBsZXMgaW5mb3JtYXRpb25zIGRlIHNvbiBjb21wdGVcblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpOy8vIGJlc29pbiBkZSB0b3V0ZXMgbGVzIGTDqWNsYXJhdGlvbnMsIGNhciBhcHBlbCBkeW5hbWlxdWUgOiBjb25maWdUZW1wbGF0ZVtob21lUGFnZV1cbmNvbnN0IGNvbmZpZ1VzZXJzID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTsvLyBpZGVtIHBvdXIgY29uZmlndXJlciBmb3JtdWxhaXJlXG5cbi8vIEltcG9ydGF0aW9uIGRlcyBmb25jdGlvbnMgdXRpbGVzIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGNoZWNrQW5zd2VyRGF0YXMsIGNoZWNrU2Vzc2lvbiwgZ2V0VGltZURpZmZlcmVuY2UgfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgbmVlZFVuaXF1ZUVtYWlsIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBidG5TdWJtaXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJtaXREYXRhc1wiKTtcbmNvbnN0IGRpdlJlc3BvbnNlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBlbWFpbElucHV0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxcIik7XG5jb25zdCBteUZvcm09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpcHRpb25cIik7XG5cbi8vIFRlc3QgZGUgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgKyBhZmZpY2hhZ2UgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIDpcbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgbGV0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpLCB1c2VyO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlQWNjb3VudExpbmsodXNlci5zdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKTsvLyBsaWVuIHZlcnMgbGUgY29tcHRlIGFkYXB0w6kgcG91ciBsZXMgdXRpbGlzYXRldXJzIGNvbm5lY3TDqXNcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdVc2VycywgbXlGb3JtKTtcbiAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuaGVsbG9EZXYoKTtcblxuLy8gVGVzdCBzaSBsJ2UtbWFpbCBzYWlzaSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciB1biBhdXRyZSBjb21wdGUuXG4vLyBTaSBjJ2VzdCBsZSBjYXMsIGxhIHZhbGlkYXRpb24gZHUgZm9ybXVsYWlyZSBlc3QgYmxvcXXDqWUuXG5lbWFpbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBmdW5jdGlvbihlKVxue1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxNZXNzYWdlXCIpLmlubmVySFRNTD1cIlwiOy8vIHBvdXIgc3VwcHJpbWVyIGwnw6l2ZW50dWVsIG1lc3NhZ2UgZCdlcnJldXIgZMOpasOgIGFmZmljaMOpXG59KTtcbmVtYWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgZnVuY3Rpb24oZSlcbntcbiAgICBjb25zdCBlbWFpbFZhbHVlPWVtYWlsSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmKGVtYWlsVmFsdWUhPT1cIlwiKVxuICAgIHtcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5jaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuZnJlZSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmZyZWUgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsTWVzc2FnZVwiKSwgXCJkaXZcIiwgbmVlZFVuaXF1ZUVtYWlsLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICBidG5TdWJtaXQuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnRuU3VibWl0LnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgY29uc3QgZGF0YXM9eyBlbWFpbFRlc3Q6ZW1haWxWYWx1ZSB9O1xuICAgICAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgIH1cbn0pO1xuXG4vLyBUcmFpdGVtZW50IGRlIGwnZW52b2kgZGVzIGRvbm7DqWVzIGQnaW5zY3JpcHRpb24gOlxubXlGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgIFxuICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLnN1YnNjcmliZVJvdXRlKTtcbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISEgaW1wb3J0YW50LCBwb3VyIG5lIHBhcyBlbnJlZ2lzdGVyIHBsdXNpZXVycyBmb2lzIGxlIHLDqXN1bHRhdC5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhteUZvcm0pO1xuICAgICAgICBpZihkYXRhcylcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMudGltZURpZmZlcmVuY2U9Z2V0VGltZURpZmZlcmVuY2UoY29uZmlnVXNlcnMpO1xuICAgICAgICAgICAgLy8gU2kgbCd1dGlsaXNhdGV1ciBhIHByw6ljw6lkZW1lbnQgcsOpcG9uZHUgw6AgdW4gcXVpeiwgb24gYWpvdXRlIGxlcyBkb25uw6llcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgIGRhdGFzPWNoZWNrQW5zd2VyRGF0YXMoZGF0YXMpO1xuICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/homeManager.app.js b/front/public/JS/homeManager.app.js index 38e894d..f2f47b4 100644 --- a/front/public/JS/homeManager.app.js +++ b/front/public/JS/homeManager.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -527,9 +536,9 @@ module.exports = { correctAnswerTxt: "Bonne réponse", estimatedTime: "Durée de lecture estimée : ", estimatedTimeOption: { - "short": "courte", + short: "courte", medium: "moyenne", - "long": "longue" + long: "longue" }, explanationBeforeTxt: "Extrait :", haveBeenPublished: ":NB nouveaux questionnaires ont été publiés.", @@ -673,99 +682,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1419,4 +1407,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmUkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9tZU1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImJ0blNlbmRSZXNwb25zZSIsImJ0blNoYXJlUXVpelR4dCIsImJ0blNoYXJlUXVpek1haWxCb2R5IiwiYnRuU2hvd1F1ZXN0aW9ubmFpcmUiLCJjb3JyZWN0QW5zd2VyVHh0IiwiZXN0aW1hdGVkVGltZSIsImVzdGltYXRlZFRpbWVPcHRpb24iLCJtZWRpdW0iLCJleHBsYW5hdGlvbkJlZm9yZVR4dCIsImhhdmVCZWVuUHVibGlzaGVkIiwiaGF2ZUJlZW5SZWdlbmVyYXRlZCIsImxhc3RVcGRhdGVkIiwibGlua0dvVG9OZXh0RWxlbWVudCIsImxpbmtHb1RvUXVpeiIsIm5lZWRDb3JyZWN0UHVibGlzaGluZ0RhdGUiLCJuZWVkRXN0aW1hdGVkVGltZSIsIm5lZWRHcm91cElmUmFuayIsIm5lZWRJbnRyb2R1Y3Rpb24iLCJuZWVkS25vd0lmSXNQdWJsaXNoZWQiLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTm90VG9vTG9uZ1RpdGxlIiwibmVlZE51bWJlckZvclJhbmsiLCJuZWVkVGl0bGUiLCJuZWVkVW5pcXVlVXJsIiwibmVlZFVybCIsIm5leHREYXRlV2l0aG91dFF1ZXN0aW9ubmFpcmUiLCJuZXh0UXVlc3Rpb25uYWlyZXNMaXN0IiwicXVlc3Rpb25uYWlyZXNOYW1lIiwicXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCIsInB1Ymxpc2hlZEF0IiwicHVibGlzaGVkQnkiLCJzZWFyY2hRdWVzdGlvbm5haXJlUmVzdWx0VGl0bGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlV2l0aE5vUmVzdWx0Iiwic2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQiLCJ3cm9uZ0Fuc3dlclR4dCIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJkaXZNYWluIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdkNyYXNoIiwiZGl2TWVzc2FnZSIsImRpdlF1ZXN0aW9ubmFpcmVzIiwiYnRuUmVnZW5lcmF0ZSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwibWVzc2FnZSIsImNvbG9yIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwiYWRkRWxlbWVudCIsInN0eWxlIiwiZGlzcGxheSIsInJlbW92ZUxvY2FseSIsInhoclN0YXRzIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsIm1hcFRleHQiLCJOQl9VU0VSU18yNEgiLCJuYk5ld1VzZXJzMjRIIiwiTkJfU1VCU0NSSVBUSU9OU18yNEgiLCJTdWJzY3JpcHRpb25zIiwibmJTdWJzY3JpcHRpb25zMjRIIiwiTkJfVVNFUlNfREVMRVRFRF8yNEgiLCJuYkRlbGV0ZWRVc2VyczI0SCIsIk5CX0FOU1dFUlNfMjRIIiwiQW5zd2VycyIsIm5iQW5zd2VyczI0SCIsIk5CX1VTRVJTX1RPVCIsIm5iTmV3VXNlcnNUb3QiLCJOQl9TVUJTQ1JJUFRJT05TX1RPVCIsIm5iU3Vic2NyaXB0aW9uc1RvdCIsIk5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSIsIm5iU3Vic2NyaXB0aW9uc1ByZW1pdW0iLCJOQl9BTlNXRVJTX1RPVCIsIm5iQW5zd2Vyc1RvdCIsIk5CX1VTRVJTX0RFTEVURURfVE9UIiwibmJEZWxldGVkVXNlcnNUb3QiLCJOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQiLCJuYkRlbGV0ZWRVc2Vyc1dhc1ZhbGlkZWQiLCJOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0iLCJuYkRlbGV0ZWRVc2Vyc1RvdFdhc1ByZW1pdW0iLCJyZXBsYWNlQWxsIiwic2V0UmVxdWVzdEhlYWRlciIsInRva2VuIiwic2VuZCIsInhock5leHRRdWVzdGlvbm5haXJlcyIsIkFycmF5IiwiaXNBcnJheSIsImxpc3RIVE1MIiwiZGF5U3RyIiwib3B0aW9uc0RheVN0ciIsIndlZWtkYXkiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJmb3JtYXQiLCJkYXRlUHVibGlzaGluZyIsImRhdGVGb3JtYXQiLCJpc1B1Ymxpc2hhYmxlIiwiZGF0ZU5lZWRlZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwicHJldmVudERlZmF1bHQiLCJ4aHJSZWdlbmVyYXRlIiwiY29uc29sZSIsImVycm9yIiwic2F2ZUxvY2FseSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiaW5uZXJIVE1MIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJsaW5rIiwiaG9tZVBhZ2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwibm93IiwieGhyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGQSxJQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENBQTlCOztBQUVBRSxNQUFNLENBQUNDLE9BQVA7QUFFSUMsUUFBTSxFQUFFLDJCQUZaO0FBR0lDLFNBQU8sRUFBRSx1QkFIYjtBQUlJQyxXQUFTLEVBQUUsU0FKZjtBQUtJQyxZQUFVLEVBQUUsbUJBTGhCO0FBTUlDLFlBQVUsRUFBRSxtQkFOaEI7QUFPSUMsYUFBVyxFQUFFLHVCQVBqQjtBQVFJQyxXQUFTLEVBQUUsSUFSZjtBQVNJQyxPQUFLLEVBQUUsV0FUWDtBQVN3QjtBQUNwQkMsZ0JBQWMsRUFBRSxDQUFDLElBQUQsQ0FWcEI7QUFVMkI7QUFDdkJDLFVBQVEsRUFBRSxtQkFYZDtBQVlJQyxvQkFBa0IsRUFBRSxJQVp4QjtBQVk4QjtBQUMxQkMsb0JBQWtCLEVBQUUsS0FieEI7QUFhK0I7QUFDM0JDLDBCQUF3QixFQUFFLEdBZDlCO0FBY21DO0FBQy9CQyw4QkFBNEIsRUFBRSxDQWZsQztBQWVxQztBQUNqQ0Msa0NBQWdDLEVBQUUsS0FoQnRDO0FBZ0I2QztBQUN6Q0MsMkJBQXlCLEVBQUUsSUFqQi9CO0FBa0JJQyw4QkFBNEIsRUFBRSxLQWxCbEM7QUFtQklDLDZCQUEyQixFQUFFLFVBbkJqQztBQW9CSUMsK0JBQTZCLEVBQUUsSUFwQm5DO0FBb0J3QztBQUNwQ0MsNEJBQTBCLEVBQUUsSUFyQmhDO0FBc0JJQyxnQ0FBOEIsRUFBRSxRQXRCcEM7QUFzQjhDO0FBQzFDQyx5QkFBdUIsRUFBRSxDQXZCN0I7QUF1QitCO0FBQzNCQyx5Q0FBdUMsRUFBRSxDQXhCN0M7QUF5QklDLDBDQUF3QyxFQUFFLEVBekI5QztBQTBCSUMsMkNBQXlDLEVBQUUsQ0ExQi9DO0FBMkJJQyxtQ0FBaUMsRUFBRSxHQTNCdkM7QUE0Qkk7QUFDQUMsZ0JBQWMsRUFBRSxDQTdCcEI7QUE2QnVCO0FBQ25CQyxnQkFBYyxFQUFFLENBOUJwQjtBQThCdUI7QUFDbkJDLGNBQVksRUFBRSxFQS9CbEI7QUFnQ0lDLHFCQUFtQixFQUFFLEVBaEN6QjtBQWdDNEI7QUFDeEJDLCtCQUE2QixFQUFDLENBakNsQztBQWlDcUM7QUFDakNDLDZCQUEyQixFQUFDLEVBbENoQztBQWtDb0M7QUFDaENDLGtDQUFnQyxFQUFFLEVBbkN0QztBQW1DMEM7QUFDdENDLHlCQUF1QixFQUFFLENBcEM3QjtBQXFDSUMsd0JBQXNCLEVBQUcsY0FyQzdCO0FBcUM2QztBQUN6QztBQUNBQyw0QkFBMEIsRUFBRSxDQXZDaEM7QUF3Q0lDLDRCQUEwQixFQUFFLENBeENoQztBQXlDSTtBQUNBQyxvQkFBa0IsRUFBRSxDQTFDeEI7QUEyQ0lDLG9CQUFrQixFQUFFLENBM0N4QjtBQTRDSUMsNEJBQTBCLEVBQUUsT0E1Q2hDO0FBNEN3QztBQUNwQ0MsMEJBQXdCLEVBQUUsQ0FBRSxXQUFGLEVBQWUsWUFBZixFQUE2QixXQUE3QixFQUEwQyxXQUExQyxFQUF1RCxXQUF2RCxDQTdDOUI7QUE4Q0k7QUFDQUMsMkJBQXlCLEVBQUUsR0EvQy9CO0FBZ0RJQyxxQ0FBbUMsRUFBRSxHQWhEekM7QUFpREk7QUFDQUMsWUFBVSxFQUFFLENBbERoQjtBQW1ESUMsWUFBVSxFQUFFO0FBbkRoQixzREFxRG9CLENBckRwQixzREFzRG9CLENBdERwQixvREF1RGtCLEVBdkRsQix5REF5RHVCakQsS0FBSyxDQUFDa0QsUUFBTixDQUFlQyxTQXpEdEMscURBMERtQm5ELEtBQUssQ0FBQ29ELGFBMUR6Qiw0REEyRDBCcEQsS0FBSyxDQUFDcUQsb0JBM0RoQyw4REE0RDRCbkQsY0FBYyxDQUFDb0Qsc0JBNUQzQyx5REE2RHVCcEQsY0FBYyxDQUFDcUQsaUJBN0R0QyxtRUE4RGlDckQsY0FBYyxDQUFDc0QsMkJBOURoRCw2REErRDJCdEQsY0FBYyxDQUFDdUQscUJBL0QxQyw0REFnRTBCdkQsY0FBYyxDQUFDd0Qsb0JBaEV6QyxvQjs7Ozs7Ozs7Ozs7QUNIQXZELE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0k7QUFDQXVELHFCQUFtQixFQUFFLGdCQUZ6QjtBQUUwQztBQUN0Q0MsMkJBQXlCLEVBQUUsNkJBSC9CO0FBSUlDLHdCQUFzQixFQUFFLE1BSjVCO0FBS0lDLDhCQUE0QixFQUFHLFlBTG5DO0FBTUlDLHdCQUFzQixFQUFHLFNBTjdCO0FBT0lDLDRCQUEwQixFQUFFLFVBUGhDO0FBUUlDLDhCQUE0QixFQUFFLFFBUmxDO0FBU0lDLGdCQUFjLEVBQUUsa0JBVHBCO0FBVUlDLGdDQUE4QixFQUFHLGNBVnJDO0FBV0lDLDJCQUF5QixFQUFHLFNBWGhDO0FBWUk7QUFDQUMsYUFBVyxFQUFFLFFBYmpCO0FBY0lDLGVBQWEsRUFBRSxPQWRuQjtBQWVJQyxvQkFBa0IsRUFBRSxVQWZ4QjtBQWdCSUMsbUJBQWlCLEVBQUcsU0FoQnhCO0FBaUJJO0FBQ0FDLGdCQUFjLEVBQUUsWUFsQnBCO0FBbUJJO0FBQ0FDLGlCQUFlLEVBQUUsZUFwQnJCO0FBcUJJO0FBQ0FDLGVBQWEsRUFBRSxpQkF0Qm5CO0FBdUJJQyxvQkFBa0IsRUFBRSxnQkF2QnhCO0FBd0JJQyxpQkFBZSxFQUFHLHVCQXhCdEI7QUF3QjhDO0FBQzFDQyxrQkFBZ0IsRUFBRSxVQXpCdEI7QUF5QmlDO0FBQzdCO0FBQ0FDLGVBQWEsRUFDYjtBQUNJQyxTQUFLLEVBQUU7QUFBRUMsZUFBUyxFQUFFLEdBQWI7QUFBa0JDLGNBQVEsRUFBRTtBQUE1QixLQURYO0FBRUlDLFFBQUksRUFBRTtBQUFFRixlQUFTLEVBQUU7QUFBYixLQUZWO0FBRThCO0FBQzFCRyxnQkFBWSxFQUFFO0FBQUVGLGNBQVEsRUFBRTtBQUFaO0FBSGxCLEdBNUJKO0FBaUNJRyxzQkFBb0IsRUFBRztBQUFFbEMsYUFBUyxFQUFFLENBQWI7QUFBZ0IrQixZQUFRLEVBQUU7QUFBMUIsR0FqQzNCO0FBa0NJSSxPQUFLLEVBQ0w7QUFDSU4sU0FBSyxFQUFFO0FBQUVDLGVBQVMsRUFBRSxHQUFiO0FBQWtCQyxjQUFRLEVBQUU7QUFBNUIsS0FEWDtBQUVJQyxRQUFJLEVBQUU7QUFBRUYsZUFBUyxFQUFFO0FBQWIsS0FGVixDQUU4Qjs7QUFGOUIsR0FuQ0o7QUF1Q0lNLFVBQVEsRUFDUjtBQUNJQyxRQUFJLEVBQUU7QUFBRVAsZUFBUyxFQUFFLEdBQWI7QUFBa0JDLGNBQVEsRUFBRTtBQUE1QixLQURWO0FBRUlPLFFBQUksRUFBRTtBQUFFUCxjQUFRLEVBQUUsSUFBWjtBQUFrQlEsU0FBRyxFQUFDLENBQXRCO0FBQXlCQyxrQkFBWSxFQUFDO0FBQXRDO0FBRlYsR0F4Q0o7QUE0Q0lDLFFBQU0sRUFDTjtBQUNJSixRQUFJLEVBQUU7QUFBRVAsZUFBUyxFQUFFLEdBQWI7QUFBa0JDLGNBQVEsRUFBRTtBQUE1QjtBQURWLEdBN0NKO0FBZ0RJVyxRQUFNLEVBQUU7QUFBRTFDLGFBQVMsRUFBRSxDQUFiO0FBQWdCK0IsWUFBUSxFQUFFO0FBQTFCLEdBaERaO0FBaURJWSxjQUFZLEVBQUU7QUFBRTNDLGFBQVMsRUFBRSxDQUFiO0FBQWdCK0IsWUFBUSxFQUFFO0FBQTFCLEdBakRsQjtBQWtESTtBQUNBYSxnQkFBYyxFQUFHLDZCQW5EckI7QUFvREl6Qyx3QkFBc0IsRUFBRyxzQkFwRDdCO0FBcURJQyxtQkFBaUIsRUFBRyxnQ0FyRHhCO0FBc0RJeUMsY0FBWSxFQUFHLDJCQXREbkI7QUF1REl4Qyw2QkFBMkIsRUFBRyw0QkF2RGxDO0FBd0RJO0FBQ0F5QyxlQUFhLEVBQUcsc0JBekRwQjtBQTBESXhDLHVCQUFxQixFQUFHLG1CQTFENUI7QUEyREl5QyxhQUFXLEVBQUcsb0JBM0RsQjtBQTRESUMsYUFBVyxFQUFHLG9CQTVEbEI7QUE2REk7QUFDQUMsY0FBWSxFQUFHLFNBOURuQjtBQStESTFDLHNCQUFvQixFQUFHLE1BL0QzQjtBQWdFSTJDLFlBQVUsRUFBRyxRQWhFakI7QUFpRUlDLFlBQVUsRUFBRyxRQWpFakI7QUFrRUk7QUFDQUMsaUJBQWUsRUFBRyxDQW5FdEI7O0FBb0VJO0FBQ0F4RSxnQkFBYyxFQUFFLENBckVwQjtBQXNFSUMsZ0JBQWMsRUFBRSxDQXRFcEI7QUF1RUlDLGNBQVksRUFBRSxFQXZFbEI7QUF3RUl1RSxXQUFTLEVBQUUsQ0F4RWY7QUF5RUlDLFdBQVMsRUFBRSxDQXpFZixDQXlFa0I7O0FBekVsQixDQURBLEM7Ozs7Ozs7Ozs7O0FDQUF0RyxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJO0FBQ0FzRyxZQUFVLEVBQUUsT0FGaEI7QUFHSUMsc0JBQW9CLEVBQUUsaUJBSDFCO0FBSUlDLHlCQUF1QixFQUFFLGNBSjdCO0FBS0lDLGlCQUFlLEVBQUUsY0FMckI7QUFNSUMsd0JBQXNCLEVBQUUsbUJBTjVCO0FBT0lDLDBCQUF3QixFQUFFLGNBUDlCO0FBUUlDLGlCQUFlLEVBQUUsUUFSckI7QUFTSUMseUJBQXVCLEVBQUUsaUJBVDdCO0FBVUlDLGlCQUFlLEVBQUUsU0FWckI7QUFXSXZDLGVBQWEsRUFBRSxpQkFYbkI7QUFZSXdDLGNBQVksRUFBRSxnQkFabEI7QUFhSUMsbUJBQWlCLEVBQUUsaUJBYnZCO0FBY0lDLG1CQUFpQixFQUFFLGVBZHZCO0FBZUlDLGFBQVcsRUFBRSx5QkFmakI7QUFnQklDLGNBQVksRUFBRSxPQWhCbEI7QUFpQklDLDZCQUEyQixFQUFFLDBCQWpCakM7QUFpQjREO0FBQ3hEQyxpQkFBZSxFQUFFLFVBbEJyQjtBQW1CSUMsdUJBQXFCLEVBQUUsb0JBbkIzQjtBQW9CSUMsZ0JBQWMsRUFBRSxTQXBCcEI7QUFxQklDLGtCQUFnQixFQUFFLHFCQXJCdEI7QUFzQklDLGlCQUFlLEVBQUUsVUF0QnJCO0FBdUJJQyxtQkFBaUIsRUFBRSxZQXZCdkI7QUF3Qkk7QUFDQUMsTUFBSSxFQUFFO0FBQUU5QyxhQUFTLEVBQUUsRUFBYjtBQUFpQkMsWUFBUSxFQUFFO0FBQTNCLEdBekJWO0FBMEJJOEMsT0FBSyxFQUFFO0FBQUUvQyxhQUFTLEVBQUUsR0FBYjtBQUFrQkMsWUFBUSxFQUFFO0FBQTVCLEdBMUJYO0FBMkJJaEMsVUFBUSxFQUFFO0FBQUVDLGFBQVMsRUFBRSxDQUFiO0FBQWdCOEIsYUFBUyxFQUFDLEVBQTFCO0FBQThCQyxZQUFRLEVBQUU7QUFBeEMsR0EzQmQ7QUEyQjhEO0FBQzFEK0MsYUFBVyxFQUFFO0FBQUU5RSxhQUFTLEVBQUUsQ0FBYjtBQUFnQjhCLGFBQVMsRUFBQztBQUExQixHQTVCakI7QUE2QklpRCxlQUFhLEVBQUU7QUFBRWpELGFBQVMsRUFBRTtBQUFiLEdBN0JuQjtBQThCSWtELE9BQUssRUFBRTtBQUFFQyxTQUFLLEVBQUUsTUFBVDtBQUFpQmxELFlBQVEsRUFBRTtBQUEzQixHQTlCWDtBQStCSVcsUUFBTSxFQUFFO0FBQUUxQyxhQUFTLEVBQUUsQ0FBYjtBQUFnQitCLFlBQVEsRUFBRTtBQUExQixHQS9CWjtBQWdDSW1ELG1CQUFpQixFQUFFLENBQUMsR0FoQ3hCO0FBaUNJQyxtQkFBaUIsRUFBRSxHQWpDdkI7QUFrQ0k7QUFDQWxGLGVBQWEsRUFBRyxhQW5DcEI7QUFvQ0lDLHNCQUFvQixFQUFHLG9DQXBDM0I7QUFxQ0lrRiw2QkFBMkIsRUFBRztBQXJDbEMsQ0FEQSxDOzs7Ozs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFOzs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RTs7Ozs7Ozs7Ozs7QUN0QkE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0Q7Ozs7Ozs7Ozs7O0FDdEJBcEksTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSW9JLFdBQVMsRUFBRSxTQURmO0FBRUlDLGNBQVksRUFBRyx3Q0FGbkI7QUFHSUMsZ0JBQWMsRUFBRSxrQkFIcEI7QUFJSUMsUUFBTSxFQUFHLCtDQUpiO0FBS0lDLHdCQUFzQixFQUFHLFlBTDdCO0FBTUlDLHNCQUFvQixFQUFFLGlCQU4xQjtBQU9JQyxxQkFBbUIsRUFBRSxxQkFQekI7QUFRSUMsa0JBQWdCLEVBQUUsOEJBUnRCO0FBU0lDLGNBQVksRUFBRSxXQVRsQjtBQVVJQyxtQkFBaUIsRUFBRyxrREFWeEI7QUFXSUMsaUJBQWUsRUFBRyx3Q0FYdEI7QUFZSUMsVUFBUSxFQUFHLDRCQVpmO0FBYUlDLGNBQVksRUFBRyxxREFibkI7QUFjSUMsZ0JBQWMsRUFBRyxrQ0FkckI7QUFlSUMsWUFBVSxFQUFHLDJCQWZqQjtBQWdCSUMsZUFBYSxFQUFHLDJDQWhCcEI7QUFpQklDLGNBQVksRUFBRyxzREFqQm5CO0FBa0JJQyxVQUFRLEVBQUcsZUFsQmY7QUFtQklDLFlBQVUsRUFBRywyREFuQmpCO0FBb0JJQyxhQUFXLEVBQUcsYUFwQmxCO0FBcUJJQyxnQkFBYyxFQUFHLG9CQXJCckI7QUFzQklDLGNBQVksRUFBRyxpQkF0Qm5CO0FBdUJJQyxhQUFXLEVBQUcsNEdBdkJsQjtBQXdCSUMsa0JBQWdCLEVBQUcsd0JBeEJ2QjtBQXlCSUMsZUFBYSxFQUFHLDRDQXpCcEI7QUEwQklDLHFCQUFtQixFQUFHLHFNQTFCMUI7QUEyQklDLG1CQUFpQixFQUFHLG1FQTNCeEI7QUE0QklDLGtCQUFnQixFQUFHLHVFQTVCdkI7QUE2QklDLFlBQVUsRUFBRyxtaEJBN0JqQjtBQThCSUMsa0JBQWdCLEVBQUUsa0JBOUJ0QjtBQStCSUMsY0FBWSxFQUFFLFVBL0JsQjtBQWdDSUMsaUJBQWUsRUFBRztBQWhDdEIsQ0FEQSxDOzs7Ozs7Ozs7OztBQ0FBcEssTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSXlJLHNCQUFvQixFQUFFLGlCQUQxQjtBQUM0QztBQUN4Q0MscUJBQW1CLEVBQUUscUJBRnpCO0FBRStDO0FBQzNDMEIsaUJBQWUsRUFBRSxzQkFIckI7QUFJSUMsaUJBQWUsRUFBRSxlQUpyQjtBQUtJQyxzQkFBb0IsRUFBRSxnRkFMMUI7QUFNSUMsc0JBQW9CLEVBQUUsb0JBTjFCO0FBT0lDLGtCQUFnQixFQUFFLGVBUHRCO0FBUUlDLGVBQWEsRUFBRSw2QkFSbkI7QUFTSUMscUJBQW1CLEVBQ25CO0FBQ0ksYUFBTyxRQURYO0FBRUlDLFVBQU0sRUFBRSxTQUZaO0FBR0ksWUFBTTtBQUhWLEdBVko7QUFlSUMsc0JBQW9CLEVBQUUsV0FmMUI7QUFnQklDLG1CQUFpQixFQUFHLDhDQWhCeEI7QUFpQklDLHFCQUFtQixFQUFHLG9IQWpCMUI7QUFrQklDLGFBQVcsRUFBRSwyQkFsQmpCO0FBbUJJQyxxQkFBbUIsRUFBRSxpQkFuQnpCO0FBb0JJQyxjQUFZLEVBQUUsaUJBcEJsQjtBQXFCSUMsMkJBQXlCLEVBQUUsMERBckIvQjtBQXNCSUMsbUJBQWlCLEVBQUUsOERBdEJ2QjtBQXVCSUMsaUJBQWUsRUFBRSw2RUF2QnJCO0FBd0JJQyxrQkFBZ0IsRUFBRSx3REF4QnRCO0FBeUJJQyx1QkFBcUIsRUFBRSx1Q0F6QjNCO0FBMEJJQyxjQUFZLEVBQUUsK0NBMUJsQjtBQTJCSUMscUJBQW1CLEVBQUUsOERBM0J6QjtBQTRCSUMsbUJBQWlCLEVBQUUsc0ZBNUJ2QjtBQTZCSUMsV0FBUyxFQUFFLHlDQTdCZjtBQThCSUMsZUFBYSxFQUFFLGlDQTlCbkI7QUErQklDLFNBQU8sRUFBRSxzQ0EvQmI7QUFnQ0lDLDhCQUE0QixFQUFFLHVDQWhDbEM7QUFpQ0lDLHdCQUFzQixFQUFFLDZDQWpDNUI7QUFrQ0lDLG9CQUFrQixFQUFFLE1BbEN4QjtBQW1DSUMsOEJBQTRCLEVBQUUsZ0JBbkNsQztBQW9DSUMsYUFBVyxFQUFFLE1BcENqQjtBQXFDSUMsYUFBVyxFQUFFLGlCQXJDakI7QUFzQ0lDLGdDQUE4QixFQUFHLCtCQXRDckM7QUF1Q0lDLGlDQUErQixFQUFHLGlEQXZDdEM7QUF3Q0lDLCtCQUE2QixFQUFHLHdEQXhDcEM7QUF5Q0lDLGdCQUFjLEVBQUU7QUF6Q3BCLENBREEsQzs7Ozs7Ozs7Ozs7QUNBQXZNLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0l1TSxrQkFBZ0IsRUFBRSxtQ0FEdEI7QUFFSUMsMEJBQXdCLEVBQUUsNklBRjlCO0FBR0lDLGFBQVcsRUFBRSxrRUFIakI7QUFJSUMsZUFBYSxFQUFFLDJGQUpuQjtBQUtJQyxjQUFZLEVBQUUsb0JBTGxCO0FBTUlDLG1CQUFpQixFQUFFLDhDQU52QjtBQU9JQyxpQ0FBK0IsRUFBRSxzREFQckM7QUFRSWhFLG1CQUFpQixFQUFFLHlEQVJ2QjtBQVNJaUUsNEJBQTBCLEVBQUUsbURBVGhDO0FBVUloRSxpQkFBZSxFQUFFLG9DQVZyQjtBQVdJaUUsZUFBYSxFQUFFLG9FQVhuQjtBQVlJQyxhQUFXLEVBQUUsK0hBWmpCO0FBYUlDLGdCQUFjLEVBQUUsa0ZBYnBCO0FBY0lDLGlCQUFlLEVBQUUsVUFkckI7QUFlSUMsdUJBQXFCLEVBQUUsc0JBZjNCO0FBZ0JJQyx3QkFBc0IsRUFBRSx5Q0FoQjVCO0FBZ0JzRTtBQUNsRUMsaUJBQWUsRUFBRSw0SUFqQnJCO0FBa0JJQyxnQkFBYyxFQUFFLGVBbEJwQjtBQW1CSUMsZ0JBQWMsRUFBRSw0RkFuQnBCO0FBb0JJQyxtQkFBaUIsRUFBRSxxRkFwQnZCO0FBcUJJQyxxQkFBbUIsRUFBRSxxQ0FyQnpCO0FBc0JJQyx1QkFBcUIsRUFBRSxxQkF0QjNCO0FBdUJJQyxtQkFBaUIsRUFBRSxnTEF2QnZCO0FBd0JJQyxzQkFBb0IsRUFBRSxnRkF4QjFCO0FBeUJJQyxzQkFBb0IsRUFBRSx5RkF6QjFCO0FBMEJJQyxvQkFBa0IsRUFBRyw4SEExQnpCO0FBMkJJQyxtQkFBaUIsRUFBRywwSEEzQnhCO0FBNEJJQyw4QkFBNEIsRUFBRSxxRUE1QmxDO0FBNkJJQywyQkFBeUIsRUFBRSxrRUE3Qi9CO0FBOEJJQyx1QkFBcUIsRUFBRSx3SkE5QjNCO0FBK0JJQyx5QkFBdUIsRUFBRSx1RUEvQjdCO0FBZ0NJQyxtQkFBaUIsRUFBRyxZQWhDeEI7QUFpQ0lDLG1CQUFpQixFQUFHLDJDQWpDeEI7QUFrQ0lDLHVCQUFxQixFQUFHLGlIQWxDNUI7QUFtQ0lDLHNCQUFvQixFQUFHLCtHQW5DM0I7QUFvQ0lDLHNCQUFvQixFQUFHLGlKQXBDM0I7QUFxQ0lDLHNCQUFvQixFQUFHLDBCQXJDM0I7QUFzQ0lDLGtCQUFnQixFQUFHLGVBdEN2QjtBQXVDSUMsNEJBQTBCLEVBQUcseVFBdkNqQztBQXdDSUMsMkJBQXlCLEVBQUcsb1BBeENoQztBQXlDSUMsMkJBQXlCLEVBQUcsNEJBekNoQztBQTBDSUMsMkJBQXlCLEVBQUcsU0ExQ2hDO0FBMkNJQyx5QkFBdUIsRUFBRyxvSUEzQzlCO0FBNENJQyx3QkFBc0IsRUFBRyxnSUE1QzdCO0FBNkNJQyw0QkFBMEIsRUFBRSxrVEE3Q2hDO0FBOENJQyx3QkFBc0IsRUFBRyxVQTlDN0I7QUErQ0lDLDBCQUF3QixFQUFFLDREQS9DOUI7QUFnRElDLHdCQUFzQixFQUFHLDZDQWhEN0I7QUFpRElDLDZCQUEyQixFQUFHLHNJQWpEbEM7QUFrRElDLDRCQUEwQixFQUFHLGtJQWxEakM7QUFtRElDLDJCQUF5QixFQUFHLG9DQW5EaEM7QUFvRElDLHVCQUFxQixFQUFHLHFCQXBENUI7QUFxRElDLHVCQUFxQixFQUFFLGlMQXJEM0I7QUFzRElDLHFCQUFtQixFQUFHLHFyQkF0RDFCO0FBdURJQyxvQkFBa0IsRUFBRyx3b0JBdkR6QjtBQXdESUMsb0JBQWtCLEVBQUcsNEJBeER6QjtBQXlESUMsb0JBQWtCLEVBQUcsYUF6RHpCO0FBMERJQyxpQkFBZSxFQUFFLHFEQTFEckI7QUEyRElDLG9CQUFrQixFQUFFLDZIQTNEeEI7QUE0RElDLFdBQVMsRUFBRSx1Q0E1RGY7QUE2RElDLHNCQUFvQixFQUFHLDhFQTdEM0I7QUE4REkxRSxjQUFZLEVBQUcsMkJBOURuQjtBQStESTJFLGtCQUFnQixFQUFHLG9FQS9EdkI7QUFnRUlDLHVCQUFxQixFQUFHLG9GQWhFNUI7QUFpRUlDLHVCQUFxQixFQUFHLG9GQWpFNUI7QUFrRUlDLFVBQVEsRUFBRSx3Q0FsRWQ7QUFtRUlDLG9CQUFrQixFQUFFLDhFQW5FeEI7QUFvRUlDLHFCQUFtQixFQUFFLDRFQXBFekI7QUFxRUlDLGNBQVksRUFBRyxtQ0FyRW5CO0FBc0VJQyxVQUFRLEVBQUcsNEJBdEVmO0FBdUVJQyxrQkFBZ0IsRUFBRyxtQ0F2RXZCO0FBd0VJQyxZQUFVLEVBQUcsc0JBeEVqQjtBQXlFSUMsb0JBQWtCLEVBQUcsNkRBekV6QjtBQTBFSUMsV0FBUyxFQUFHLG1EQTFFaEI7QUEyRUlDLGlCQUFlLEVBQUUsdUtBM0VyQjtBQTRFSUMsdUJBQXFCLEVBQUcsK0lBNUU1QjtBQTZFSUMsNkJBQTJCLEVBQUcsaURBN0VsQztBQThFSUMsZ0JBQWMsRUFBRSwySUE5RXBCO0FBK0VJQywwQkFBd0IsRUFBRSxtQ0EvRTlCO0FBZ0ZJQyxtQkFBaUIsRUFBRyw2SkFoRnhCO0FBaUZJQyxnQ0FBOEIsRUFBRyx5RUFqRnJDO0FBa0ZJQyxzQkFBb0IsRUFBRyw4RkFsRjNCO0FBbUZJQywwQkFBd0IsRUFBRywrSEFuRi9CO0FBb0ZJQyx3QkFBc0IsRUFBRyw4SEFwRjdCO0FBcUZJQywwQkFBd0IsRUFBRSxrR0FyRjlCO0FBc0ZJQyxrQkFBZ0IsRUFBRSw2Q0F0RnRCO0FBdUZJQywwQkFBd0IsRUFBRSxvSEF2RjlCO0FBd0ZJQywrQkFBNkIsRUFBRSw4QkF4Rm5DO0FBeUZJQyxtQkFBaUIsRUFBRSx1SUF6RnZCO0FBMEZJQyx3QkFBc0IsRUFBRSw4QkExRjVCO0FBMkZJQyxnQkFBYyxFQUFFO0FBM0ZwQixDQURBLEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7SUFFTUMsSTs7Ozs7OztXQUVGLGlCQUFlQyxLQUFmLEVBQ0E7QUFDSSxVQUFHQSxLQUFLLEtBQUdDLFNBQVIsSUFBcUJELEtBQUssS0FBRyxJQUFoQyxFQUNJLE9BQU8sSUFBUCxDQURKLEtBR0E7QUFDSUEsYUFBSyxJQUFFLEVBQVAsQ0FESixDQUNjOztBQUNWQSxhQUFLLEdBQUNBLEtBQUssQ0FBQ0UsSUFBTixFQUFOO0FBQ0EsWUFBR0YsS0FBSyxLQUFHLEVBQVgsRUFDSSxPQUFPLElBQVAsQ0FESixLQUdJLE9BQU8sS0FBUDtBQUNQO0FBQ0o7OztXQUVELHVCQUFxQkcsUUFBckIsRUFDQTtBQUNJLFVBQUdKLElBQUksQ0FBQ0ssT0FBTCxDQUFhRCxRQUFiLENBQUgsRUFDSUEsUUFBUSxHQUFDLElBQVQsQ0FESixLQUdBO0FBQ0lBLGdCQUFRLElBQUUsRUFBVixDQURKLENBQ2lCOztBQUNiQSxnQkFBUSxHQUFDQSxRQUFRLENBQUNELElBQVQsRUFBVDtBQUNIO0FBQ0QsYUFBT0MsUUFBUDtBQUNIOzs7V0FHRCw2QkFBMkJBLFFBQTNCLEVBQXFDRSxHQUFyQyxFQUNBO0FBQ0lGLGNBQVEsSUFBRSxFQUFWLENBREosQ0FDaUI7O0FBQ2QsVUFBR0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCRCxHQUFyQixFQUNLRixRQUFRLEdBQUNBLFFBQVEsQ0FBQ0ksU0FBVCxDQUFtQixDQUFuQixFQUF1QkYsR0FBRyxHQUFDLENBQTNCLElBQStCLEdBQXhDO0FBQ0osYUFBT0YsUUFBUDtBQUNILEssQ0FFRDs7OztXQUNBLG9CQUFrQkEsUUFBbEIsRUFBNEJLLE1BQTVCLEVBQ0E7QUFDSSxVQUFNQyxXQUFXLEdBQUcsSUFBSUMsTUFBSixDQUFXQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosTUFBWixFQUFvQkssSUFBcEIsQ0FBeUIsR0FBekIsQ0FBWCxFQUF5QyxJQUF6QyxDQUFwQjtBQUNBLGFBQU9WLFFBQVEsQ0FBQ1csT0FBVCxDQUFpQkwsV0FBakIsRUFBOEIsVUFBQ00sT0FBRCxFQUNyQztBQUNJLGVBQU9QLE1BQU0sQ0FBQ08sT0FBRCxDQUFiO0FBQ0gsT0FITSxDQUFQO0FBSUgsSyxDQUVEOzs7O1dBQ0Esc0JBQW9Cek4sR0FBcEIsRUFBeUIrTSxHQUF6QixFQUNBO0FBQ0kvTSxTQUFHLEdBQUcwTixJQUFJLENBQUNDLElBQUwsQ0FBVTNOLEdBQVYsQ0FBTjtBQUNBK00sU0FBRyxHQUFHVyxJQUFJLENBQUNFLEtBQUwsQ0FBV2IsR0FBWCxDQUFOO0FBQ0EsYUFBT1csSUFBSSxDQUFDRSxLQUFMLENBQVdGLElBQUksQ0FBQ0csTUFBTCxNQUFpQmQsR0FBRyxHQUFHL00sR0FBdkIsQ0FBWCxJQUEwQ0EsR0FBakQ7QUFDSCxLLENBRUQ7Ozs7V0FDQSxvQkFBa0I4TixVQUFsQixFQUNBO0FBQUEsVUFEOEJDLElBQzlCLHVFQURtQyxJQUNuQztBQUNJLFVBQUd0QixJQUFJLENBQUNLLE9BQUwsQ0FBYWdCLFVBQWIsQ0FBSCxFQUNJLE9BQU8sRUFBUDtBQUNKLFVBQUlFLE1BQU0sR0FBQyxJQUFJQyxJQUFKLENBQVNILFVBQVQsQ0FBWDtBQUNBLFVBQUlJLEtBQUssR0FBQ0YsTUFBTSxDQUFDRyxPQUFQLEtBQWlCLEVBQTNCO0FBQ0EsVUFBR0QsS0FBSyxDQUFDbEIsTUFBTixLQUFlLENBQWxCLEVBQ0lrQixLQUFLLEdBQUMsTUFBSUEsS0FBVjtBQUNKLFVBQUlFLFFBQVEsR0FBRUosTUFBTSxDQUFDSyxRQUFQLEtBQWtCLENBQW5CLEdBQXNCLEVBQW5DO0FBQ0EsVUFBR0QsUUFBUSxDQUFDcEIsTUFBVCxLQUFrQixDQUFyQixFQUNJb0IsUUFBUSxHQUFDLE1BQUlBLFFBQWI7QUFDSixVQUFJRSxNQUFNLEdBQUNOLE1BQU0sQ0FBQ08sV0FBUCxFQUFYO0FBQ0EsVUFBR1IsSUFBSSxLQUFHLElBQVYsRUFDSSxPQUFPRyxLQUFLLEdBQUMsR0FBTixHQUFVRSxRQUFWLEdBQW1CLEdBQW5CLEdBQXVCRSxNQUE5QixDQURKLEtBRUssSUFBSVAsSUFBSSxLQUFHLE1BQVgsRUFBa0I7QUFDbkIsZUFBT08sTUFBTSxHQUFDLEdBQVAsR0FBV0YsUUFBWCxHQUFvQixHQUFwQixHQUF3QkYsS0FBL0IsQ0FEQyxLQUdELE9BQU9FLFFBQVEsR0FBQyxHQUFULEdBQWFGLEtBQWIsR0FBbUIsR0FBbkIsR0FBdUJJLE1BQTlCO0FBQ1AsSyxDQUVEO0FBQ0E7Ozs7V0FDQSxxQkFBb0JFLFFBQXBCLEVBQThCQyxRQUE5QixFQUNBO0FBQ0ksVUFBTUMsS0FBSyxHQUFDRixRQUFRLEdBQUNkLElBQUksQ0FBQ0UsS0FBTCxDQUFXRixJQUFJLENBQUNHLE1BQUwsTUFBZVksUUFBUSxHQUFDRCxRQUF4QixDQUFYLENBQXJCO0FBQ0EsVUFBTUcsT0FBTyxHQUFDLG9EQUFkO0FBQ0EsVUFBTUMsTUFBTSxHQUFDLDhCQUFiO0FBQ0EsVUFBSXBSLFFBQVEsR0FBQ21SLE9BQU8sQ0FBQ2pCLElBQUksQ0FBQ0UsS0FBTCxDQUFXRixJQUFJLENBQUNHLE1BQUwsS0FBY2MsT0FBTyxDQUFDM0IsTUFBakMsQ0FBRCxDQUFwQjs7QUFDQSxXQUFJLElBQUk2QixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUVILEtBQUssR0FBQyxDQUFyQixFQUF3QkcsQ0FBQyxFQUF6QixFQUNBO0FBQ0ksWUFBSUEsQ0FBQyxHQUFHLENBQUwsS0FBVyxDQUFkLEVBQ0lyUixRQUFRLElBQUVvUixNQUFNLENBQUNsQixJQUFJLENBQUNFLEtBQUwsQ0FBV0YsSUFBSSxDQUFDRyxNQUFMLEtBQWNlLE1BQU0sQ0FBQzVCLE1BQWhDLENBQUQsQ0FBaEIsQ0FESixLQUdJeFAsUUFBUSxJQUFFbVIsT0FBTyxDQUFDakIsSUFBSSxDQUFDRSxLQUFMLENBQVdGLElBQUksQ0FBQ0csTUFBTCxLQUFjYyxPQUFPLENBQUMzQixNQUFqQyxDQUFELENBQWpCO0FBQ1A7O0FBQ0R4UCxjQUFRLElBQUVtUixPQUFPLENBQUNqQixJQUFJLENBQUNFLEtBQUwsQ0FBV0YsSUFBSSxDQUFDRyxNQUFMLEtBQWNjLE9BQU8sQ0FBQzNCLE1BQWpDLENBQUQsQ0FBakI7QUFDQSxhQUFPeFAsUUFBUDtBQUNIOzs7Ozs7QUFHTC9DLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQitSLElBQWpCLEM7Ozs7Ozs7Ozs7O0FDbkdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEQ7Ozs7Ozs7Ozs7O0FDdkJBaFMsTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSW9VLFdBQVMsRUFDVCxDQUNJO0FBQUVDLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDO0FBQVA7QUFBakMsR0FESixFQUVJO0FBQUVGLFVBQU0sRUFBRSxZQUFWO0FBQXdCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGlCQUFQO0FBQTBCQyxRQUFFLEVBQUU7QUFBOUI7QUFBcEMsR0FGSixFQUdJO0FBQUVILFVBQU0sRUFBRSxVQUFWO0FBQXNCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDO0FBQVA7QUFBbEMsR0FISixFQUlJO0FBQUVGLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDO0FBQVA7QUFBakMsR0FKSixDQUZKO0FBUUlFLFdBQVMsRUFDVCxDQUNJO0FBQUVKLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDO0FBQVA7QUFBakMsR0FESixFQUVJO0FBQUVGLFVBQU0sRUFBRSxrQkFBVjtBQUE4QkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyx3QkFBUDtBQUFpQ0csU0FBRyxFQUFFO0FBQXRDO0FBQTFDLEdBRkosRUFHSTtBQUFFTCxVQUFNLEVBQUUsc0JBQVY7QUFBa0NDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUM7QUFBUDtBQUE5QyxHQUhKLEVBSUk7QUFBRUYsVUFBTSxFQUFFLFFBQVY7QUFBb0JDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsV0FBUDtBQUFvQkcsU0FBRyxFQUFFO0FBQXpCO0FBQWhDLEdBSkosRUFLSTtBQUFFTCxVQUFNLEVBQUUsUUFBVjtBQUFvQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxXQUFQO0FBQW9CRyxTQUFHLEVBQUU7QUFBekI7QUFBaEMsR0FMSixDQVRKO0FBZ0JJQyx5QkFBdUIsRUFBRSxFQWhCN0I7QUFpQklDLGNBQVksRUFBRyxjQWpCbkI7QUFrQklDLGVBQWEsRUFBRyxZQWxCcEI7QUFtQklDLGlCQUFlLEVBQUcsY0FuQnRCO0FBb0JJQyxlQUFhLEVBQUcsa0JBcEJwQjtBQXFCSUMsZ0JBQWMsRUFBRyxnQkFyQnJCO0FBc0JJQyxhQUFXLEVBQUUsYUF0QmpCO0FBdUJJQyw4QkFBNEIsRUFBRSxvQkF2QmxDO0FBd0JJQyxxQkFBbUIsRUFBRSwyQkF4QnpCO0FBeUJJQyw4QkFBNEIsRUFBRyxFQXpCbkM7QUEwQklDLGlCQUFlLEVBQUcsYUExQnRCO0FBMkJJQyxZQUFVLEVBQUUsMEJBM0JoQjtBQTRCSUMsWUFBVSxFQUFFLHNCQTVCaEI7QUE2QklDLFFBQU0sRUFBRSxrU0E3Qlo7QUE4QklDLFlBQVUsRUFBRSx1QkE5QmhCO0FBK0JJQyxRQUFNLEVBQUUsK2NBL0JaO0FBZ0NJQyx3QkFBc0IsRUFBRSwwQ0FoQzVCO0FBaUNJQyx3QkFBc0IsRUFBRSxpREFqQzVCO0FBa0NJQyxrQkFBZ0IsRUFBRSw0QkFsQ3RCO0FBbUNJQyxnQkFBYyxFQUFFLDJpQ0FuQ3BCO0FBb0NJQyxrQkFBZ0IsRUFBRSwrRkFwQ3RCO0FBcUNJQyxhQUFXLEVBQUU7QUFyQ2pCLENBREEsQzs7Ozs7Ozs7Ozs7QUNBQWpXLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0k7QUFDQW9VLFdBQVMsRUFDVCxDQUNJO0FBQUVDLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGVBQVA7QUFBd0JHLFNBQUcsRUFBRTtBQUE3QjtBQUFqQyxHQURKLEVBRUk7QUFBRUwsVUFBTSxFQUFFLFdBQVY7QUFBdUJDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsU0FBUDtBQUFrQkMsUUFBRSxFQUFDLGVBQXJCO0FBQXNDNVAsV0FBSyxFQUFDO0FBQTVDO0FBQW5DLEdBRkosRUFHSTtBQUFFeVAsVUFBTSxFQUFFLFlBQVY7QUFBd0JDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsaUJBQVA7QUFBMEJDLFFBQUUsRUFBRSxpQkFBOUI7QUFBaUQ1UCxXQUFLLEVBQUM7QUFBdkQ7QUFBcEMsR0FISixFQUlJO0FBQUV5UCxVQUFNLEVBQUUsVUFBVjtBQUFzQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxnQkFBUDtBQUF5QjNQLFdBQUssRUFBQztBQUEvQjtBQUFsQyxHQUpKLEVBS0k7QUFBRXlQLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLEdBQVA7QUFBWTNQLFdBQUssRUFBQztBQUFsQjtBQUFqQyxHQUxKLENBSEo7QUFVSTZQLFdBQVMsRUFDVCxDQUNJO0FBQUVKLFVBQU0sRUFBRSxNQUFWO0FBQWtCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGlFQUFQO0FBQTBFM1AsV0FBSyxFQUFDO0FBQWhGO0FBQTlCLEdBREosRUFFSTtBQUFFeVAsVUFBTSxFQUFFLFNBQVY7QUFBcUJDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsZUFBUDtBQUF3QjNQLFdBQUssRUFBQztBQUE5QjtBQUFqQyxHQUZKLEVBR0k7QUFBRXlQLFVBQU0sRUFBRSxrQkFBVjtBQUE4QkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyx3QkFBUDtBQUFpQ0csU0FBRyxFQUFFO0FBQXRDO0FBQTFDLEdBSEosRUFJSTtBQUFFTCxVQUFNLEVBQUUsc0JBQVY7QUFBa0NDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsZUFBUDtBQUF3QjNQLFdBQUssRUFBQztBQUE5QjtBQUE5QyxHQUpKLEVBS0k7QUFBRXlQLFVBQU0sRUFBRSxXQUFWO0FBQXVCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGVBQVA7QUFBd0JHLFNBQUcsRUFBRTtBQUE3QjtBQUFuQyxHQUxKLENBWEo7QUFrQklPLGFBQVcsRUFBRSxhQWxCakI7QUFtQklnQixXQUFTLEVBQUUsZUFuQmY7QUFvQklwQixlQUFhLEVBQUUsWUFwQm5CO0FBcUJJcUIsU0FBTyxFQUFFLGNBckJiO0FBc0JJbEIsZ0JBQWMsRUFBRyxnQkF0QnJCO0FBdUJJbUIsZ0JBQWMsRUFBRyxrQkF2QnJCO0FBd0JJQyxlQUFhLEVBQUcsZUF4QnBCO0FBeUJJdEIsaUJBQWUsRUFBRyxjQXpCdEI7QUEwQkl1QixrQkFBZ0IsRUFBRyxrQkExQnZCO0FBMkJJbkIsOEJBQTRCLEVBQUUsb0JBM0JsQztBQTRCSW9CLGNBQVksRUFBRyxtQkE1Qm5CO0FBNkJJdkIsZUFBYSxFQUFHLGtCQTdCcEI7QUE4Qkl3QixtQkFBaUIsRUFBRSxhQTlCdkI7QUErQkkzQixjQUFZLEVBQUcsY0EvQm5CO0FBZ0NJNEIsaUJBQWUsRUFBRyxvQkFoQ3RCO0FBaUNJckIscUJBQW1CLEVBQUUsMkJBakN6QjtBQWtDSXNCLG9CQUFrQixFQUFHLG9CQWxDekI7O0FBbUNJO0FBQ0FuQixZQUFVLEVBQUUsMEJBcENoQjtBQXFDSVMsa0JBQWdCLEVBQUUsK0ZBckN0QjtBQXNDSVcsa0JBQWdCLEVBQUUsb0JBdEN0QjtBQXVDSUMsWUFBVSxFQUFFLHVTQXZDaEI7O0FBd0NJO0FBQ0FDLGFBQVcsRUFBRSxnQkF6Q2pCO0FBMENJckIsWUFBVSxFQUFFLHNCQTFDaEI7QUEyQ0lDLFFBQU0sRUFBRSxrVEEzQ1o7QUE0Q0lDLFlBQVUsRUFBRSxnQ0E1Q2hCO0FBNkNJQyxRQUFNLEVBQUUsc2FBN0NaO0FBOENJbUIsaUJBQWUsRUFBRSxnQ0E5Q3JCO0FBK0NJQyxxQkFBbUIsRUFBRyxrQkEvQzFCO0FBZ0RJQywwQkFBd0IsRUFBRywwQ0FoRC9COztBQWlESTtBQUNBcEIsd0JBQXNCLEVBQUUsZ0VBbEQ1QjtBQW1ESUMsd0JBQXNCLEVBQUUsc0ZBbkQ1QjtBQW9ESW9CLGVBQWEsRUFBRSwwTkFwRG5COztBQXFESTtBQUNBQyxjQUFZLEVBQUUsbUVBdERsQjtBQXVESUMsaUJBQWUsRUFBRSxtRkF2RHJCO0FBd0RJQyxjQUFZLEVBQUUsdUtBeERsQjs7QUF5REk7QUFDQUMsNkJBQTJCLEVBQUUsUUExRGpDO0FBMkRJQyx1QkFBcUIsRUFBRSxnQkEzRDNCO0FBNERJQyxpQ0FBK0IsRUFBRSwwQ0E1RHJDO0FBNkRJekIsa0JBQWdCLEVBQUUsNEJBN0R0QjtBQThESUMsZ0JBQWMsRUFBRSw2dkJBOURwQjtBQStESXlCLHVCQUFxQixFQUFFLHVrQkEvRDNCOztBQWdFSTtBQUNBbEMsaUJBQWUsRUFBRyxhQWpFdEI7QUFrRUltQyxnQkFBYyxFQUFFLFdBbEVwQjtBQW1FSTdDLHlCQUF1QixFQUFFLEVBbkU3QjtBQW9FSThDLCtCQUE2QixFQUFFLENBcEVuQztBQXFFSXJDLDhCQUE0QixFQUFHO0FBckVuQyxDQURBLEM7Ozs7Ozs7Ozs7OztBQ0FBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0EsTUFBTS9CLElBQUksR0FBQzVTLGtFQUFjLENBQUMsQ0FBRCxDQUF6QjtBQUVBO0FBQ0E7O0FBQ0EsTUFBTWlYLGNBQWMsR0FBRzdYLCtEQUFRLElBQWMsR0FBQ1cseURBQWYsR0FBcUIsVUFBckIsR0FBZ0M2UyxJQUFoQyxHQUFxQyxLQUF0QyxDQUE5QixDLENBRUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0EsTUFBTTtBQUFFL0osWUFBRjtBQUFjSSxhQUFkO0FBQTJCTTtBQUEzQixJQUEwQ25LLG1FQUFRLElBQWEsR0FBQ3dULElBQWQsR0FBbUIsVUFBcEIsQ0FBdkQ7O0FBQ0EsTUFBTTtBQUFFeEgsOEJBQUY7QUFBZ0NDLHdCQUFoQztBQUF3REU7QUFBeEQsSUFBeUZuTSx5RUFBUSxJQUFhLEdBQUN3VCxJQUFkLEdBQW1CLGdCQUFwQixDQUF0Rzs7QUFDQSxNQUFNO0FBQUV2QjtBQUFGLElBQXFCalMsZ0VBQVEsSUFBYSxHQUFDd1QsSUFBZCxHQUFtQixPQUFwQixDQUFsQyxDLENBRUE7OztBQUNBLE1BQU1zRSxPQUFPLEdBQUdDLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixjQUF4QixDQUFoQjtBQUNBLE1BQU1DLFFBQVEsR0FBR0YsUUFBUSxDQUFDQyxjQUFULENBQXdCLE9BQXhCLENBQWpCO0FBQ0EsTUFBTUUsVUFBVSxHQUFHSCxRQUFRLENBQUNDLGNBQVQsQ0FBd0IsU0FBeEIsQ0FBbkI7QUFDQSxNQUFNRyxpQkFBaUIsR0FBR0osUUFBUSxDQUFDQyxjQUFULENBQXdCLGdCQUF4QixDQUExQjtBQUNBLE1BQU1JLGFBQWEsR0FBR0wsUUFBUSxDQUFDQyxjQUFULENBQXdCLGdCQUF4QixDQUF0QjtBQUVBSyxxRUFBUTs7QUFFUixNQUFNQyxVQUFVLEdBQUcsWUFDbkI7QUFDSSxNQUNBO0FBQ0ksVUFBTUMsV0FBVyxHQUFDLE1BQU1DLG9FQUFZLENBQUMsQ0FBQyxTQUFELEVBQVksT0FBWixDQUFELEVBQXVCLE1BQUlYLGNBQWMsQ0FBQzFDLGNBQTFDLEVBQTBEO0FBQUVzRCxhQUFPLEVBQUVoUCxVQUFYO0FBQXVCaVAsV0FBSyxFQUFDO0FBQTdCLEtBQTFELENBQXBDOztBQUNBLFFBQUdILFdBQUgsRUFDQTtBQUNJLFlBQU1JLElBQUksR0FBQ0MseUVBQVMsQ0FBQyxNQUFELEVBQVMsSUFBVCxDQUFwQjtBQUNBQyxvRkFBaUIsQ0FBQ0YsSUFBSSxDQUFDRyxNQUFOLEVBQWNqQixjQUFkLENBQWpCO0FBQ0FrQixzRUFBVSxDQUFDYixVQUFELEVBQWEsSUFBYixFQUFtQmpHLGNBQWMsQ0FBQ2dCLE9BQWYsQ0FBdUIsT0FBdkIsRUFBZ0MwRixJQUFJLENBQUM3USxJQUFyQyxDQUFuQixDQUFWO0FBQ0FnUSxhQUFPLENBQUNrQixLQUFSLENBQWNDLE9BQWQsR0FBc0IsT0FBdEI7O0FBQ0EsVUFBRyxDQUFDMUcsMkRBQU8sQ0FBQ3FHLHlFQUFTLENBQUMsU0FBRCxDQUFWLENBQVgsRUFDQTtBQUNJRyx3RUFBVSxDQUFDYixVQUFELEVBQWEsR0FBYixFQUFrQlUseUVBQVMsQ0FBQyxTQUFELEVBQVksSUFBWixDQUFULENBQTJCSCxPQUE3QyxFQUFzRCxFQUF0RCxFQUEwRCxDQUFDRyx5RUFBUyxDQUFDLFNBQUQsRUFBWSxJQUFaLENBQVQsQ0FBMkJGLEtBQTVCLENBQTFELEVBQThGLEVBQTlGLEVBQWtHLEtBQWxHLENBQVY7QUFDQVEsb0ZBQVksQ0FBQyxTQUFELENBQVo7QUFDSCxPQVRMLENBVUk7OztBQUNBLFlBQU1DLFFBQVEsR0FBRyxJQUFJQyxjQUFKLEVBQWpCO0FBQ0FELGNBQVEsQ0FBQ0UsSUFBVCxDQUFjLEtBQWQsRUFBcUJqWiwwREFBTSxHQUFDcUcsMkRBQVAsR0FBa0IvQiw4REFBdkM7O0FBQ0F5VSxjQUFRLENBQUNHLGtCQUFULEdBQThCLFlBQzlCO0FBQ0ksWUFBSSxLQUFLQyxVQUFMLElBQW1CSCxjQUFjLENBQUNJLElBQXRDLEVBQ0E7QUFDSSxjQUFJQyxRQUFRLEdBQUNDLElBQUksQ0FBQ0MsS0FBTCxDQUFXLEtBQUtDLFlBQWhCLENBQWI7O0FBQ0EsY0FBSSxLQUFLZCxNQUFMLEtBQWdCLEdBQXBCLEVBQ0E7QUFDSSxrQkFBTWUsT0FBTyxHQUNiO0FBQ0lDLDBCQUFZLEVBQUdMLFFBQVEsQ0FBQ00sYUFENUI7QUFFSUMsa0NBQW9CLEVBQUdQLFFBQVEsQ0FBQ1EsYUFBVCxDQUF1QkMsa0JBRmxEO0FBR0lDLGtDQUFvQixFQUFHVixRQUFRLENBQUNXLGlCQUhwQztBQUlJQyw0QkFBYyxFQUFHWixRQUFRLENBQUNhLE9BQVQsQ0FBaUJDLFlBSnRDO0FBS0lDLDBCQUFZLEVBQUdmLFFBQVEsQ0FBQ2dCLGFBTDVCO0FBTUlDLGtDQUFvQixFQUFHakIsUUFBUSxDQUFDUSxhQUFULENBQXVCVSxrQkFObEQ7QUFPSUMsc0NBQXdCLEVBQUduQixRQUFRLENBQUNRLGFBQVQsQ0FBdUJZLHNCQVB0RDtBQVFJQyw0QkFBYyxFQUFHckIsUUFBUSxDQUFDYSxPQUFULENBQWlCUyxZQVJ0QztBQVNJQyxrQ0FBb0IsRUFBR3ZCLFFBQVEsQ0FBQ3dCLGlCQVRwQztBQVVJQyxzQ0FBd0IsRUFBR3pCLFFBQVEsQ0FBQzBCLHdCQVZ4QztBQVdJQyxzQ0FBd0IsRUFBRzNCLFFBQVEsQ0FBQzRCO0FBWHhDLGFBREE7QUFjQXRDLDRFQUFVLENBQUNiLFVBQUQsRUFBYSxHQUFiLEVBQWtCb0QsOERBQVUsQ0FBQ25SLFVBQUQsRUFBYTBQLE9BQWIsQ0FBNUIsRUFBbUQsRUFBbkQsRUFBdUQsRUFBdkQsRUFBMkQsRUFBM0QsRUFBK0QsS0FBL0QsQ0FBVjtBQUNIO0FBQ0o7QUFDSixPQXhCRDs7QUF5QkFWLGNBQVEsQ0FBQ29DLGdCQUFULENBQTBCLGVBQTFCLEVBQTJDLFlBQVU1QyxJQUFJLENBQUM2QyxLQUExRDtBQUNBckMsY0FBUSxDQUFDc0MsSUFBVCxHQXZDSixDQXlDSTs7QUFDQSxZQUFNQyxxQkFBcUIsR0FBRyxJQUFJdEMsY0FBSixFQUE5QjtBQUNBc0MsMkJBQXFCLENBQUNyQyxJQUF0QixDQUEyQixLQUEzQixFQUFrQ2paLDBEQUFNLEdBQUNzRCw2RUFBUCxHQUEyQkMsbUZBQTdEOztBQUNBK1gsMkJBQXFCLENBQUNwQyxrQkFBdEIsR0FBMkMsWUFDM0M7QUFDSSxZQUFJLEtBQUtDLFVBQUwsSUFBbUJILGNBQWMsQ0FBQ0ksSUFBdEMsRUFDQTtBQUNJLGNBQUlDLFFBQVEsR0FBQ0MsSUFBSSxDQUFDQyxLQUFMLENBQVcsS0FBS0MsWUFBaEIsQ0FBYjs7QUFDQSxjQUFJLEtBQUtkLE1BQUwsS0FBZ0IsR0FBaEIsSUFBdUI2QyxLQUFLLENBQUNDLE9BQU4sQ0FBY25DLFFBQVEsQ0FBQ3haLGNBQXZCLENBQTNCLEVBQ0E7QUFDSSxnQkFBSTRiLFFBQVEsR0FBQyxFQUFiO0FBQUEsZ0JBQWlCQyxNQUFqQjtBQUFBLGdCQUF5QkMsYUFBYSxHQUFHO0FBQUVDLHFCQUFPLEVBQUU7QUFBWCxhQUF6Qzs7QUFDQSxpQkFBSSxJQUFJMUgsQ0FBUixJQUFhbUYsUUFBUSxDQUFDeFosY0FBdEIsRUFDQTtBQUNJNmIsb0JBQU0sR0FBQyxJQUFJRyxJQUFJLENBQUNDLGNBQVQsQ0FBd0IxSSxJQUF4QixFQUE4QnVJLGFBQTlCLEVBQTZDSSxNQUE3QyxDQUFvRCxJQUFJekksSUFBSixDQUFTK0YsUUFBUSxDQUFDeFosY0FBVCxDQUF3QnFVLENBQXhCLEVBQTJCOEgsY0FBcEMsQ0FBcEQsQ0FBUDtBQUNBUCxzQkFBUSxJQUFFLFNBQU9DLE1BQVAsR0FBYyxHQUFkLEdBQWtCTyw4REFBVSxDQUFDNUMsUUFBUSxDQUFDeFosY0FBVCxDQUF3QnFVLENBQXhCLEVBQTJCOEgsY0FBNUIsRUFBNEN4YixrRUFBYyxDQUFDLENBQUQsQ0FBMUQsQ0FBNUIsR0FBMkYsYUFBM0YsR0FBeUdpWCxjQUFjLENBQUN4Qyw0QkFBeEgsR0FBcUosTUFBckosR0FBNEpvRSxRQUFRLENBQUN4WixjQUFULENBQXdCcVUsQ0FBeEIsRUFBMkJLLEVBQXZMLEdBQTBMLElBQTFMLEdBQStMOEUsUUFBUSxDQUFDeFosY0FBVCxDQUF3QnFVLENBQXhCLEVBQTJCdlAsS0FBMU4sR0FBZ08sTUFBMU87QUFDQSxrQkFBRzBVLFFBQVEsQ0FBQ3haLGNBQVQsQ0FBd0JxVSxDQUF4QixFQUEyQmdJLGFBQTNCLEtBQTJDLEtBQTlDLEVBQ0lULFFBQVEsSUFBRSwyQkFBeUIxUCw0QkFBekIsR0FBc0QsUUFBaEU7QUFDSjBQLHNCQUFRLElBQUUsT0FBVjtBQUNIOztBQUNELGdCQUFHcEMsUUFBUSxDQUFDeFosY0FBVCxDQUF3QndTLE1BQXhCLEtBQWlDLENBQXBDLEVBQ0lzRyxnRUFBVSxDQUFDWixpQkFBRCxFQUFvQixJQUFwQixFQUEwQmxNLHNCQUFzQixDQUFDZ0gsT0FBdkIsQ0FBK0IsS0FBL0IsRUFBc0N3RyxRQUFRLENBQUN4WixjQUFULENBQXdCd1MsTUFBOUQsQ0FBMUIsQ0FBVjtBQUNKc0csNEVBQVUsQ0FBQ1osaUJBQUQsRUFBb0IsSUFBcEIsRUFBMEJuTSw0QkFBNEIsR0FBQ3FRLDhEQUFVLENBQUM1QyxRQUFRLENBQUM4QyxVQUFWLEVBQXNCM2Isa0VBQWMsQ0FBQyxDQUFELENBQXBDLENBQWpFLEVBQTJHLEVBQTNHLEVBQStHLENBQUMsTUFBRCxDQUEvRyxFQUF5SCxFQUF6SCxFQUE2SCxLQUE3SCxDQUFWO0FBQ0FtWSw0RUFBVSxDQUFDWixpQkFBRCxFQUFvQixJQUFwQixFQUEwQjBELFFBQTFCLEVBQW9DLEVBQXBDLEVBQXdDLEVBQXhDLEVBQTRDLEVBQTVDLEVBQWdELEtBQWhELENBQVY7QUFDSDtBQUNKO0FBQ0osT0F0QkQ7O0FBdUJBSCwyQkFBcUIsQ0FBQ0gsZ0JBQXRCLENBQXVDLGVBQXZDLEVBQXdELFlBQVU1QyxJQUFJLENBQUM2QyxLQUF2RTtBQUNBRSwyQkFBcUIsQ0FBQ0QsSUFBdEIsR0FwRUosQ0FzRUk7O0FBQ0FyRCxtQkFBYSxDQUFDb0UsZ0JBQWQsQ0FBK0IsT0FBL0IsRUFBd0MsVUFBU0MsQ0FBVCxFQUN4QztBQUNJQSxTQUFDLENBQUNDLGNBQUY7QUFDQSxjQUFNQyxhQUFhLEdBQUcsSUFBSXZELGNBQUosRUFBdEI7QUFDQXVELHFCQUFhLENBQUN0RCxJQUFkLENBQW1CLEtBQW5CLEVBQTBCalosMERBQU0sR0FBQ3NELDZFQUFQLEdBQTJCTyx3RUFBckQ7O0FBQ0EwWSxxQkFBYSxDQUFDckQsa0JBQWQsR0FBbUMsWUFDbkM7QUFDSSxjQUFJLEtBQUtDLFVBQUwsSUFBbUJILGNBQWMsQ0FBQ0ksSUFBdEMsRUFDQTtBQUNJLGdCQUFJQyxRQUFRLEdBQUNDLElBQUksQ0FBQ0MsS0FBTCxDQUFXLEtBQUtDLFlBQWhCLENBQWI7QUFDQSxnQkFBSSxLQUFLZCxNQUFMLEtBQWdCLEdBQWhCLElBQXVCVyxRQUFRLENBQUNoQixPQUFULElBQWtCckcsU0FBN0MsRUFDSTJHLGdFQUFVLENBQUNiLFVBQUQsRUFBYSxHQUFiLEVBQWtCdUIsUUFBUSxDQUFDaEIsT0FBM0IsRUFBb0MsRUFBcEMsRUFBd0MsQ0FBQyxTQUFELENBQXhDLEVBQXFELEVBQXJELEVBQXlELEtBQXpELENBQVYsQ0FESixLQUdJTSxnRUFBVSxDQUFDYixVQUFELEVBQWEsR0FBYixFQUFrQnJPLFdBQWxCLEVBQStCLEVBQS9CLEVBQW1DLENBQUMsT0FBRCxDQUFuQyxFQUE4QyxFQUE5QyxFQUFrRCxLQUFsRCxDQUFWO0FBQ1A7QUFDSixTQVZEOztBQVdBOFMscUJBQWEsQ0FBQ3BCLGdCQUFkLENBQStCLGNBQS9CLEVBQStDLGtCQUEvQztBQUNBb0IscUJBQWEsQ0FBQ3BCLGdCQUFkLENBQStCLGVBQS9CLEVBQWdELFlBQVU1QyxJQUFJLENBQUM2QyxLQUEvRDtBQUNBbUIscUJBQWEsQ0FBQ2xCLElBQWQ7QUFDSCxPQW5CRDtBQW9CSDtBQUVKLEdBakdELENBa0dBLE9BQU1nQixDQUFOLEVBQ0E7QUFDSTFELG9FQUFVLENBQUNkLFFBQUQsRUFBVyxHQUFYLEVBQWdCcE8sV0FBaEIsRUFBNkIsRUFBN0IsRUFBaUMsQ0FBQyxPQUFELENBQWpDLENBQVY7QUFDQStTLFdBQU8sQ0FBQ0MsS0FBUixDQUFjSixDQUFkO0FBQ0g7QUFDSixDQXpHRDs7QUEwR0FuRSxVQUFVLEc7Ozs7Ozs7Ozs7OztBQ2pKVjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFTyxNQUFNd0UsVUFBVSxHQUFHLENBQUNoVixJQUFELEVBQU9pVixJQUFQLEtBQzFCO0FBQ0lDLGNBQVksQ0FBQ0MsT0FBYixDQUFxQm5WLElBQXJCLEVBQTJCNFIsSUFBSSxDQUFDd0QsU0FBTCxDQUFlSCxJQUFmLENBQTNCO0FBQ0gsQ0FITTtBQUtBLE1BQU1uRSxTQUFTLEdBQUcsQ0FBQzlRLElBQUQsRUFBT3FWLElBQUksR0FBQyxLQUFaLEtBQ3pCO0FBQ0ksTUFBR0EsSUFBSCxFQUNJLE9BQU96RCxJQUFJLENBQUNDLEtBQUwsQ0FBV3FELFlBQVksQ0FBQ0ksT0FBYixDQUFxQnRWLElBQXJCLENBQVgsQ0FBUCxDQURKLEtBR0ksT0FBT2tWLFlBQVksQ0FBQ0ksT0FBYixDQUFxQnRWLElBQXJCLENBQVA7QUFDUCxDQU5NO0FBUUEsTUFBTW9SLFlBQVksR0FBSXBSLElBQUQsSUFDNUI7QUFDSWtWLGNBQVksQ0FBQ0ssVUFBYixDQUF3QnZWLElBQXhCO0FBQ0gsQ0FITSxDOzs7Ozs7Ozs7Ozs7QUNoQlA7QUFBQTtBQUFBO0FBQUE7Q0FFQTs7QUFDTyxNQUFNaVIsVUFBVSxHQUFHLENBQUN1RSxTQUFELEVBQVlDLE9BQVosRUFBcUJDLFVBQVUsR0FBQyxFQUFoQyxFQUFvQ0MsS0FBSyxHQUFDLEVBQTFDLEVBQThDQyxRQUFRLEdBQUMsRUFBdkQsRUFBMkRDLGFBQWEsR0FBQyxFQUF6RSxFQUE2RTFLLE9BQU8sR0FBQyxJQUFyRixLQUMxQjtBQUNJLE1BQUdWLDJEQUFPLENBQUNnTCxPQUFELENBQVAsSUFBb0JoTCwyREFBTyxDQUFDK0ssU0FBRCxDQUE5QixFQUNJLE9BQU8sS0FBUCxDQURKLEtBR0E7QUFDSSxVQUFNTSxVQUFVLEdBQUM3RixRQUFRLENBQUM4RixhQUFULENBQXVCTixPQUF2QixDQUFqQjtBQUVBLFFBQUcsQ0FBQ2hMLDJEQUFPLENBQUNrTCxLQUFELENBQVgsRUFBbUI7QUFDZkcsZ0JBQVUsQ0FBQ2pKLEVBQVgsR0FBYzhJLEtBQWQ7O0FBRUosUUFBRzlCLEtBQUssQ0FBQ0MsT0FBTixDQUFjOEIsUUFBZCxLQUEyQkEsUUFBUSxDQUFDakwsTUFBVCxJQUFpQixDQUEvQyxFQUNBO0FBQ0ksV0FBSSxJQUFJNkIsQ0FBUixJQUFhb0osUUFBYixFQUNJRSxVQUFVLENBQUNFLFNBQVgsQ0FBcUJDLEdBQXJCLENBQXlCTCxRQUFRLENBQUNwSixDQUFELENBQWpDO0FBQ1A7O0FBRUQsUUFBRyxPQUFPcUosYUFBUCxLQUF5QixRQUE1QixFQUFzQztBQUN0QztBQUNJLGFBQUksSUFBSUssWUFBUixJQUF3QkwsYUFBeEIsRUFDSUMsVUFBVSxDQUFDSyxZQUFYLENBQXdCRCxZQUF4QixFQUFzQ0wsYUFBYSxDQUFDSyxZQUFELENBQW5EO0FBQ1A7O0FBRUQsUUFBRyxDQUFDekwsMkRBQU8sQ0FBQ2lMLFVBQUQsQ0FBWCxFQUNJSSxVQUFVLENBQUNNLFNBQVgsR0FBcUJWLFVBQVUsQ0FBQ3ZLLE9BQVgsQ0FBbUIsS0FBbkIsRUFBeUIsTUFBekIsQ0FBckIsQ0FuQlIsQ0FtQjhEOztBQUUxRCxRQUFHQSxPQUFILEVBQ0lxSyxTQUFTLENBQUNZLFNBQVYsR0FBb0IsRUFBcEI7QUFDSlosYUFBUyxDQUFDYSxXQUFWLENBQXNCUCxVQUF0QjtBQUNIO0FBQ0osQ0E5Qk0sQzs7Ozs7Ozs7Ozs7O0FDSFA7QUFBQTtBQUFBO0FBQUE7QUFFTyxNQUFNdkYsUUFBUSxHQUFHLE1BQ3hCO0FBQ0l1RSxTQUFPLENBQUN3QixHQUFSLENBQVkseU9BQVo7QUFDQSxTQUFPLElBQVA7QUFDSCxDQUpNO0FBTUEsTUFBTXZGLGlCQUFpQixHQUFHLENBQUNDLE1BQUQsRUFBU2pCLGNBQVQsS0FDakM7QUFDSSxRQUFNd0csSUFBSSxHQUFDdEcsUUFBUSxDQUFDQyxjQUFULENBQXdCLGlCQUF4QixDQUFYO0FBQ0EsUUFBTXNHLFFBQVEsR0FBQ3hGLE1BQU0sR0FBQyxVQUF0QjtBQUNBdUYsTUFBSSxDQUFDM0osSUFBTCxHQUFVLE1BQUltRCxjQUFjLENBQUN5RyxRQUFELENBQTVCO0FBQ0gsQ0FMTSxDOzs7Ozs7Ozs7Ozs7QUNSUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLE1BQU05SyxJQUFJLEdBQUM1UyxrRUFBYyxDQUFDLENBQUQsQ0FBekI7O0FBRUEsTUFBTWlYLGNBQWMsR0FBRzdYLCtEQUFRLElBQWlCLEdBQUNXLHlEQUFsQixHQUF3QixVQUF4QixHQUFtQzZTLElBQW5DLEdBQXdDLEtBQXpDLENBQTlCOztBQUVBO0FBRUE7QUFDQTtBQUVPLE1BQU0rSyxpQkFBaUIsR0FBRyxNQUNqQztBQUNJO0FBQ0EsUUFBTUMsU0FBUyxHQUFDLElBQUk5SyxJQUFKLEdBQVcrSyxpQkFBWCxLQUErQixDQUFDLENBQWhEO0FBQ0EsTUFBR0QsU0FBUyxHQUFHblcsa0VBQVosSUFBaUNtVyxTQUFTLEdBQUdwVyxrRUFBaEQsRUFDSSxPQUFPLENBQVAsQ0FESixLQUdJLE9BQU9vVyxTQUFQO0FBQ1AsQ0FSTSxDLENBVVA7QUFDQTs7QUFDTyxNQUFNRSxVQUFVLEdBQUcsQ0FBQ0MsTUFBRCxFQUFTbkQsS0FBVCxFQUFnQm9ELFVBQWhCLEtBQzFCO0FBQ0ksUUFBTUMsV0FBVyxHQUNqQjtBQUNJbEssTUFBRSxFQUFFZ0ssTUFEUjtBQUVJbkQsU0FBSyxFQUFFQSxLQUZYO0FBR0lzRCxZQUFRLEVBQUVGO0FBSGQsR0FEQTtBQU1BOUIsc0VBQVUsQ0FBQyxNQUFELEVBQVMrQixXQUFULENBQVY7QUFDSCxDQVRNLEMsQ0FXUDtBQUNBOztBQUNPLE1BQU1FLGdCQUFnQixHQUFJQyxLQUFELElBQ2hDO0FBQ0ksUUFBTUMsVUFBVSxHQUFDckcsbUVBQVMsQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQUcsQ0FBQ3JHLDJEQUFPLENBQUMwTSxVQUFELENBQVgsRUFDQTtBQUNJLFVBQU1DLE1BQU0sR0FBQ3hGLElBQUksQ0FBQ0MsS0FBTCxDQUFXc0YsVUFBWCxDQUFiOztBQUNBLFFBQUcsQ0FBQzFNLDJEQUFPLENBQUMyTSxNQUFNLENBQUNKLFFBQVIsQ0FBUixJQUE2QixDQUFDdk0sMkRBQU8sQ0FBQzJNLE1BQU0sQ0FBQ0MsZ0JBQVIsQ0FBckMsSUFBa0UsQ0FBQzVNLDJEQUFPLENBQUMyTSxNQUFNLENBQUNFLFdBQVIsQ0FBMUUsS0FBbUcsQ0FBQzdNLDJEQUFPLENBQUMyTSxNQUFNLENBQUNHLGVBQVIsQ0FBUixJQUFvQyxDQUFDOU0sMkRBQU8sQ0FBQzJNLE1BQU0sQ0FBQ0ksT0FBUixDQUEvSSxDQUFILEVBQ0E7QUFDSU4sV0FBSyxDQUFDRixRQUFOLEdBQWVJLE1BQU0sQ0FBQ0osUUFBdEI7QUFDQUUsV0FBSyxDQUFDRyxnQkFBTixHQUF1QkQsTUFBTSxDQUFDQyxnQkFBOUI7QUFDQUgsV0FBSyxDQUFDSSxXQUFOLEdBQWtCRixNQUFNLENBQUNFLFdBQXpCO0FBQ0EsVUFBRyxDQUFDN00sMkRBQU8sQ0FBQzJNLE1BQU0sQ0FBQ0csZUFBUixDQUFYLEVBQ0lMLEtBQUssQ0FBQ0ssZUFBTixHQUFzQkgsTUFBTSxDQUFDRyxlQUE3QixDQURKLEtBR0lMLEtBQUssQ0FBQ00sT0FBTixHQUFjSixNQUFNLENBQUNJLE9BQXJCO0FBQ1A7QUFDSjs7QUFDRCxTQUFPTixLQUFQO0FBQ0gsQ0FsQk0sQyxDQW9CUDtBQUNBOztBQUNPLE1BQU14RyxZQUFZLEdBQUcsT0FBT00sTUFBTSxHQUFDLEVBQWQsRUFBa0J5RyxjQUFsQixFQUFrQzlHLE9BQWxDLEVBQTJDK0csU0FBM0MsS0FDNUI7QUFDSSxTQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FDbkI7QUFDSSxVQUFNQyxTQUFTLEdBQUNoSCxtRUFBUyxDQUFDLE1BQUQsQ0FBekI7O0FBQ0EsUUFBR3JHLDJEQUFPLENBQUNxTixTQUFELENBQVYsRUFDQTtBQUNJQyxrQkFBWSxDQUFDTixjQUFELEVBQWlCOUcsT0FBakIsRUFBMEIrRyxTQUExQixDQUFaO0FBQ0FFLGFBQU8sQ0FBQyxLQUFELENBQVA7QUFDSCxLQUpELE1BTUE7QUFDSSxZQUFNL0csSUFBSSxHQUFDZSxJQUFJLENBQUNDLEtBQUwsQ0FBV2lHLFNBQVgsQ0FBWDs7QUFDQSxVQUFHck4sMkRBQU8sQ0FBQ29HLElBQUksQ0FBQ2hFLEVBQU4sQ0FBUCxJQUFvQnBDLDJEQUFPLENBQUNvRyxJQUFJLENBQUM2QyxLQUFOLENBQTNCLElBQTJDakosMkRBQU8sQ0FBQ29HLElBQUksQ0FBQ21HLFFBQU4sQ0FBbEQsSUFBcUVuRyxJQUFJLENBQUNtRyxRQUFMLEdBQWdCcEwsSUFBSSxDQUFDb00sR0FBTCxFQUF4RixFQUNBO0FBQ0k1Ryw4RUFBWSxDQUFDLE1BQUQsQ0FBWjtBQUNBMkcsb0JBQVksQ0FBQ04sY0FBRCxFQUFpQjlHLE9BQWpCLEVBQTBCK0csU0FBMUIsQ0FBWjtBQUNBRSxlQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0gsT0FMRCxNQU9BO0FBQ0ksY0FBTUssR0FBRyxHQUFHLElBQUkzRyxjQUFKLEVBQVo7QUFDQTJHLFdBQUcsQ0FBQzFHLElBQUosQ0FBUyxLQUFULEVBQWdCalosMERBQU0sR0FBQ3FHLDJEQUFQLEdBQWtCRyxnRUFBbEIsR0FBa0MrUixJQUFJLENBQUM2QyxLQUF2RDs7QUFDQXVFLFdBQUcsQ0FBQ0MsTUFBSixHQUFhLE1BQ2I7QUFDSSxjQUFJdkcsUUFBUSxHQUFDQyxJQUFJLENBQUNDLEtBQUwsQ0FBV29HLEdBQUcsQ0FBQ25HLFlBQWYsQ0FBYjs7QUFDQSxjQUFJbUcsR0FBRyxDQUFDakgsTUFBSixLQUFlLEdBQWYsSUFBc0JXLFFBQVEsQ0FBQ3dHLE9BQS9CLElBQTBDeEcsUUFBUSxDQUFDOUUsRUFBVCxJQUFldkMsU0FBN0QsRUFDQTtBQUNJLGdCQUFHcUgsUUFBUSxDQUFDOUUsRUFBVCxLQUFjZ0UsSUFBSSxDQUFDaEUsRUFBdEIsRUFDQTtBQUNJZ0Usa0JBQUksQ0FBQzdRLElBQUwsR0FBVTJSLFFBQVEsQ0FBQzNSLElBQW5CO0FBQ0E2USxrQkFBSSxDQUFDdUgsUUFBTCxHQUFjekcsUUFBUSxDQUFDeUcsUUFBdkI7QUFDQXZILGtCQUFJLENBQUN3SCxjQUFMLEdBQW9CMUcsUUFBUSxDQUFDMEcsY0FBN0I7QUFDQXhILGtCQUFJLENBQUNHLE1BQUwsR0FBWVcsUUFBUSxDQUFDWCxNQUFyQixDQUpKLENBSWdDOztBQUM1QmdFLGtGQUFVLENBQUMsTUFBRCxFQUFTbkUsSUFBVCxDQUFWLENBTEosQ0FNSTs7QUFDQSxrQkFBR2MsUUFBUSxDQUFDWCxNQUFULEtBQWtCLE1BQWxCLElBQTRCVyxRQUFRLENBQUMyRyxRQUFULElBQXFCLENBQXBELEVBQ0E7QUFDSSxzQkFBTUMsVUFBVSxHQUFDaGdCLDJEQUFPLEdBQUMsR0FBUixHQUFZd1gsY0FBYyxDQUFDekMsV0FBNUM7QUFDQSxvQkFBR2tMLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQjdMLElBQWhCLENBQXFCOEwsT0FBckIsQ0FBNkJILFVBQTdCLE1BQTJDLENBQUMsQ0FBL0MsRUFDSUMsTUFBTSxDQUFDQyxRQUFQLENBQWdCRSxNQUFoQixDQUF1QixNQUFJNUksY0FBYyxDQUFDekMsV0FBbkIsR0FBK0IsWUFBdEQsRUFIUixDQUc0RTs7QUFDeEVzSyx1QkFBTyxDQUFDLElBQUQsQ0FBUDtBQUNILGVBTkQsTUFRQTtBQUNJLG9CQUFHNUcsTUFBTSxDQUFDckcsTUFBUCxLQUFnQixDQUFoQixJQUFxQnFHLE1BQU0sQ0FBQzBILE9BQVAsQ0FBZS9HLFFBQVEsQ0FBQ1gsTUFBeEIsTUFBa0MsQ0FBQyxDQUEzRCxFQUNBO0FBQ0krRyw4QkFBWSxDQUFDTixjQUFELEVBQWlCOUcsT0FBakIsRUFBMEIrRyxTQUExQixDQUFaO0FBQ0FFLHlCQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0gsaUJBSkQsTUFNSUEsT0FBTyxDQUFDLElBQUQsQ0FBUDtBQUNQO0FBQ0osYUF6QkQsTUEyQkE7QUFDSXhHLG9GQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0EyRywwQkFBWSxDQUFDTixjQUFELEVBQWlCOUcsT0FBakIsRUFBMEIrRyxTQUExQixDQUFaO0FBQ0FFLHFCQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixXQWxDRCxNQW9DQTtBQUNJeEcsa0ZBQVksQ0FBQyxNQUFELENBQVo7QUFDQTJHLHdCQUFZLENBQUNOLGNBQUQsRUFBaUI5RyxPQUFqQixFQUEwQitHLFNBQTFCLENBQVo7QUFDQUUsbUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFNBNUNEOztBQTZDQUssV0FBRyxDQUFDVyxPQUFKLEdBQWMsTUFBTWYsTUFBTSxDQUFDSSxHQUFHLENBQUNZLFVBQUwsQ0FBMUI7O0FBQ0FaLFdBQUcsQ0FBQ3RFLElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU1vRSxZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQjlHLE9BQWpCLEVBQTBCK0csU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUNqTiwyREFBTyxDQUFDa0csT0FBRCxDQUFYLEVBQ0lxRSxvRUFBVSxDQUFDLFNBQUQsRUFBWXJFLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ2xHLDJEQUFPLENBQUNpTixTQUFELENBQVgsRUFDSTFDLG9FQUFVLENBQUMsS0FBRCxFQUFRMEMsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDak4sMkRBQU8sQ0FBQ2dOLGNBQUQsQ0FBWCxFQUNJZSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JFLE1BQWhCLENBQXVCbEIsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9ob21lTWFuYWdlci5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9ob21lTWFuYWdlci5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvcXVlc3Rpb25uYWlyZVwiOiBcIi4uL2xhbmcvZnIvcXVlc3Rpb25uYWlyZS5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3F1ZXN0aW9ubmFpcmUkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIiwvLyBkw6lwbGFjw6kgZGFucyBnZW5lcmFsLmpzXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLC8vaWRlbVxuICAgIGJ0blNlbmRSZXNwb25zZTogXCJUZXN0ZXogdm9zIHLDqXBvbnNlcy5cIixcbiAgICBidG5TaGFyZVF1aXpUeHQ6IFwiUGFydGFnZXIgdmlhIFwiLFxuICAgIGJ0blNoYXJlUXVpek1haWxCb2R5OiBcIkJvbmpvdXIsJTBBJTBBVm9pY2klMjB1biUyMGxpZW4lMjBpbnRlcm5ldCUyMHF1aSUyMGRldnJhaXQlMjB0J2ludMOpcmVzc2VyIDolMEFcIiwgICAgXG4gICAgYnRuU2hvd1F1ZXN0aW9ubmFpcmU6IFwiUsOpcG9uZHJlIGF1IHF1aXogIVwiLFxuICAgIGNvcnJlY3RBbnN3ZXJUeHQ6IFwiQm9ubmUgcsOpcG9uc2VcIixcbiAgICBlc3RpbWF0ZWRUaW1lOiBcIkR1csOpZSBkZSBsZWN0dXJlIGVzdGltw6llIDogXCIsXG4gICAgZXN0aW1hdGVkVGltZU9wdGlvbiA6XG4gICAge1xuICAgICAgICBzaG9ydDogXCJjb3VydGVcIixcbiAgICAgICAgbWVkaXVtOiBcIm1veWVubmVcIixcbiAgICAgICAgbG9uZzogXCJsb25ndWVcIlxuICAgIH0sXG4gICAgZXhwbGFuYXRpb25CZWZvcmVUeHQ6IFwiRXh0cmFpdCA6XCIsXG4gICAgaGF2ZUJlZW5QdWJsaXNoZWQgOiBcIjpOQiBub3V2ZWF1eCBxdWVzdGlvbm5haXJlcyBvbnQgw6l0w6kgcHVibGnDqXMuXCIsXG4gICAgaGF2ZUJlZW5SZWdlbmVyYXRlZCA6IFwiTGVzIHBhZ2VzIEhUTUwgZGUgI05CMSBxdWVzdGlvbm5haXJlcyBvdSDDqWzDqW1lbnRzIGRlIGdyb3VwZXMsICNOQjIgcXVpenMgZ3JvdXDDqXMgZXQgI05CMyB0aMOobWVzIG9udCDDqXTDqSByZWfDqW7DqXLDqXMuXCIsXG4gICAgbGFzdFVwZGF0ZWQ6IFwiRGVybmnDqHJlIG1pc2Ugw6Agam91ciwgbGUgXCIsXG4gICAgbGlua0dvVG9OZXh0RWxlbWVudDogXCJBcnRpY2xlIHN1aXZhbnRcIixcbiAgICBsaW5rR29Ub1F1aXo6IFwiQWNjw6lkZXIgYXUgcXVpelwiLCAgICBcbiAgICBuZWVkQ29ycmVjdFB1Ymxpc2hpbmdEYXRlOiBcIkxhIGRhdGUgZGUgcHVibGljYXRpb24gZm91cm5pZSBuJ2EgcGFzIHVuIGZvcm1hdCB2YWxpZGUuXCIsXG4gICAgbmVlZEVzdGltYXRlZFRpbWU6IFwiTWVyY2kgZGUgc8OpbGVjdGlvbm5lciB1bmUgZXN0aW1hdGlvbiBkZSBsYSBkdXLDqWUgZGUgY2UgcXVpei5cIixcbiAgICBuZWVkR3JvdXBJZlJhbms6IFwiVm91cyBhdmV6IHNhaXNpIHVuIHJhbmcgZGUgY2xhc3NlbWVudCwgc2FucyBzw6lsZWN0aW9ubmVyIGxlIGdyb3VwZSBkdSBxdWl6LlwiLFxuICAgIG5lZWRJbnRyb2R1Y3Rpb246IFwiTWVyY2kgZGUgZm91cm5pciB1biB0ZXh0ZSBkJ2ludHJvZHVjdGlvbiDDoCB2b3RyZSBxdWl6LlwiLFxuICAgIG5lZWRLbm93SWZJc1B1Ymxpc2hlZDogXCJJbCBmYXV0IHNhdm9pciBzaSBjZSBxdWl6IGVzdCBwdWJsacOpLlwiLFxuICAgIG5lZWRMYW5ndWFnZTogXCJWb3VzIGRldmV6IHPDqWxlY3Rpb25uZXIgbGEgbGFuZ3VlIGRlIGNlIHF1aXouXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdUaXRsZTogXCJMZSB0aXRyZSBkdSBxdWl6IG5lIGRvaXQgcGFzIGNvbXB0ZXIgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE51bWJlckZvclJhbms6IFwiVm91cyBkZXZleiBzYWlzaXIgdW4gbm9tYnJlIGVudGllciBwb3VyIGxlIHJhbmcgZGUgY2UgcXVlc3Rpb25uYWlyZSBkYW5zIHNvbiBncm91cGUuXCIsICAgICAgICAgICAgICBcbiAgICBuZWVkVGl0bGU6IFwiTWVyY2kgZGUgZm91cm5pciB1biB0aXRyZSDDoCB2b3RyZSBxdWl6LlwiLFxuICAgIG5lZWRVbmlxdWVVcmw6IFwiTCd1cmwgZHUgcXVpeiBkb2l0IMOqdHJlIHVuaXF1ZS5cIixcbiAgICBuZWVkVXJsOiBcIk1lcmNpIGRlIGZvdXJuaXIgbCd1cmwgw6Agdm90cmUgcXVpei5cIixcbiAgICBuZXh0RGF0ZVdpdGhvdXRRdWVzdGlvbm5haXJlOiBcIlByb2NoYWluZSBkYXRlIHNhbnMgcXVpeiBwcm9ncmFtbcOpIDogXCIsXG4gICAgbmV4dFF1ZXN0aW9ubmFpcmVzTGlzdDogXCJMZXMgI05CIHByb2NoYWlucyBxdWl6cyBkZXZhbnQgw6p0cmUgcHVibGnDqXNcIixcbiAgICBxdWVzdGlvbm5haXJlc05hbWU6IFwicXVpelwiLFxuICAgIHF1ZXN0aW9ubmFpcmVOZWVkQmVDb21wbGV0ZWQ6IFwiUXVpeiBpbmNvbXBsZXRcIixcbiAgICBwdWJsaXNoZWRBdDogXCIsIGxlXCIsXG4gICAgcHVibGlzaGVkQnk6IFwiUXVpeiBwdWJsacOpIHBhclwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVSZXN1bHRUaXRsZSA6IFwiUsOpc3VsdGF0IHBvdXIgdm90cmUgcmVjaGVyY2hlXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCA6IFwiQXVjdW4gcXVpeiBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIHZvdHJlIHJlY2hlcmNoZS5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCA6IFwiSWwgeSBhICNOQiBhcnRpY2xlI1MgY29ycmVzcG9uZGFudCDDoCB2b3RyZSByZWNoZXJjaGUgOlwiLFxuICAgIHdyb25nQW5zd2VyVHh0OiBcIk1hdXZhaXNlIHLDqXBvbnNlXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gUEFHRSBEJ0FDQ1VFSUwgUE9VUiBMRVMgR0VTVElPTk5BSVJFU1xuXG4vLy8gVsOpcmlmaWUgcXVlIGwndXRpbGlzYXRldXIgZXN0IGJpZW4gY29ubmVjdMOpLCBhIGxlIGJvbiBzdGF0dXQgZXQgbGUgcmVkaXJpZ2UgdmVycyBsZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24gc2kgY2Ugbidlc3QgcGFzIGxlIGNhcy5cbi8vLyBTaSBjJ2VzdCBvaywgb24gcsOpY3Vww6hyZSBsZXMgc3RhdHMgZ8OpbsOpcmFsZXMgZXQgZGVzIGRlcm5pw6hyZXMgMjRIIGV0IGxlcyBhZmZpY2hlXG4vLy8gT24gbGlzdGUgZW5zdWl0ZSBsZXMgcHJvY2hhaW5zIHF1aXpzIGRldmFudCDDqnRyZSBwdWJsacOpcyBlbiBmYWlzYW50IHJlc3NvcnRpciBjZXV4IGRldmFudCDDqnRyZSBjb21wbMOpdMOpcyArIGxhIHByb2NoYWluZSBkYXRlIHNhbnMgcXVpelxuLy8vIFVuIG1lbnUgcGVybWV0IMOgIGwndXRpbGlzYXRldXIgZCdhY2PDqWRlciBhdXggZm9ybXVsYWlyZXMgcGVybWV0dGFudCBkZSBnw6lyZXIgbGVzIHF1aXpzIGV0IGxlcyBjb21wdGVzIHV0aWxpc2F0ZXVycyBldCBhYm9ubmVtZW50c1xuLy8vIFVuIG1lc3NhZ2UgdmVuYW50IGQndW5lIGF1dHJlIHBhZ2UgcGV1dCBhdXNzaSDDqnRyZSDDoCBhZmZpY2hlciBsb3JzIGR1IHByZW1pZXIgY2hhcmdlbWVudC5cblxuLy8vIFRlbXBvcmFpcmVtZW50LCBjJ2VzdCBpY2kgYXVzc2kgcXVlIGwnb24gcGV1dCByw6lnw6luw6lyZXIgdG91dCBsZSBIVE1MIC0+IMOgIHRlcm1lIGRhbnMgaG9tZUFkbWluICFcblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5pbXBvcnQgeyBnZXRBZG1pblN0YXRzLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuaW1wb3J0IHsgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcywgcXVlc3Rpb25uYWlyZVJvdXRlcywgcmVnZW5lcmF0ZUhUTUwgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzXCI7XG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuLy8gRm9uY3Rpb25zIHV0aWxlcyBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBkYXRlRm9ybWF0LCBpc0VtcHR5LCByZXBsYWNlQWxsIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBub3RBbGxvd2VkLCBzZXJ2ZXJFcnJvciwgc3RhdHNBZG1pbiB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBuZXh0RGF0ZVdpdGhvdXRRdWVzdGlvbm5haXJlLCBuZXh0UXVlc3Rpb25uYWlyZXNMaXN0LCBxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3F1ZXN0aW9ubmFpcmVcIik7XG5jb25zdCB7IHdlbGNvbWVNZXNzYWdlIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBkaXZNYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZDcmFzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3Jhc2hcIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UXVlc3Rpb25uYWlyZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzXCIpO1xuY29uc3QgYnRuUmVnZW5lcmF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2FudFJlZ2VuZXJhdGVcIik7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHsgICAgICAgIFxuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1wibWFuYWdlclwiLCBcImFkbWluXCJdLCBcIi9cIitjb25maWdUZW1wbGF0ZS5jb25uZWN0aW9uUGFnZSwgeyBtZXNzYWdlOiBub3RBbGxvd2VkLCBjb2xvcjpcImVycm9yXCIgfSk7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcImgyXCIsIHdlbGNvbWVNZXNzYWdlLnJlcGxhY2UoXCIjTkFNRVwiLCB1c2VyLm5hbWUpKTtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBMZXMgc3RhdHMgc3VyIGxlcyBjb21wdGVzIHV0aWxpc2F0ZXVycyA6XG4gICAgICAgICAgICBjb25zdCB4aHJTdGF0cyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyU3RhdHMub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytnZXRBZG1pblN0YXRzKTtcbiAgICAgICAgICAgIHhoclN0YXRzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBUZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9VU0VSU18yNEggOiByZXNwb25zZS5uYk5ld1VzZXJzMjRILFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX1NVQlNDUklQVElPTlNfMjRIIDogcmVzcG9uc2UuU3Vic2NyaXB0aW9ucy5uYlN1YnNjcmlwdGlvbnMyNEgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfVVNFUlNfREVMRVRFRF8yNEggOiByZXNwb25zZS5uYkRlbGV0ZWRVc2VyczI0SCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9BTlNXRVJTXzI0SCA6IHJlc3BvbnNlLkFuc3dlcnMubmJBbnN3ZXJzMjRILFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX1VTRVJTX1RPVCA6IHJlc3BvbnNlLm5iTmV3VXNlcnNUb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfU1VCU0NSSVBUSU9OU19UT1QgOiByZXNwb25zZS5TdWJzY3JpcHRpb25zLm5iU3Vic2NyaXB0aW9uc1RvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gOiByZXNwb25zZS5TdWJzY3JpcHRpb25zLm5iU3Vic2NyaXB0aW9uc1ByZW1pdW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfQU5TV0VSU19UT1QgOiByZXNwb25zZS5BbnN3ZXJzLm5iQW5zd2Vyc1RvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9VU0VSU19ERUxFVEVEX1RPVCA6IHJlc3BvbnNlLm5iRGVsZXRlZFVzZXJzVG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCA6IHJlc3BvbnNlLm5iRGVsZXRlZFVzZXJzV2FzVmFsaWRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gOiByZXNwb25zZS5uYkRlbGV0ZWRVc2Vyc1RvdFdhc1ByZW1pdW1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCByZXBsYWNlQWxsKHN0YXRzQWRtaW4sIG1hcFRleHQpLCBcIlwiLCBcIlwiLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJTdGF0cy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTsgXG4gICAgICAgICAgICB4aHJTdGF0cy5zZW5kKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIExlcyBxdWVzdGlvbm5haXJlcyBiaWVudMO0dCBwdWJsacOpcyA6ICAgICAgXG4gICAgICAgICAgICBjb25zdCB4aHJOZXh0UXVlc3Rpb25uYWlyZXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhock5leHRRdWVzdGlvbm5haXJlcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMpO1xuICAgICAgICAgICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucXVlc3Rpb25uYWlyZXMpKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdEhUTUw9XCJcIiwgZGF5U3RyLCBvcHRpb25zRGF5U3RyID0geyB3ZWVrZGF5OiAnbG9uZyd9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVN0cj1uZXcgSW50bC5EYXRlVGltZUZvcm1hdChsYW5nLCBvcHRpb25zRGF5U3RyKS5mb3JtYXQobmV3IERhdGUocmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uZGF0ZVB1Ymxpc2hpbmcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCI8bGk+XCIrZGF5U3RyK1wiIFwiK2RhdGVGb3JtYXQocmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uZGF0ZVB1Ymxpc2hpbmcsIGF2YWlsYWJsZUxhbmdzWzBdKStcIjogPGEgaHJlZj0nXCIrY29uZmlnVGVtcGxhdGUucXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZStcIj9pZD1cIityZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5pZCtcIic+XCIrcmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0udGl0bGUrXCI8L2E+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uaXNQdWJsaXNoYWJsZT09PWZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCIgPHNwYW4gY2xhc3M9J2Vycm9yJz4oXCIrcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCtcIik8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RIVE1MKz1cIjwvbGk+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25uYWlyZXMsIFwiaDJcIiwgbmV4dFF1ZXN0aW9ubmFpcmVzTGlzdC5yZXBsYWNlKFwiI05CXCIsIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZRdWVzdGlvbm5haXJlcywgXCJoNFwiLCBuZXh0RGF0ZVdpdGhvdXRRdWVzdGlvbm5haXJlK2RhdGVGb3JtYXQocmVzcG9uc2UuZGF0ZU5lZWRlZCwgYXZhaWxhYmxlTGFuZ3NbMF0pLCBcIlwiLCBbXCJpbmZvXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcInVsXCIsIGxpc3RIVE1MLCBcIlwiLCBcIlwiLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLnNlbmQoKTtcblxuICAgICAgICAgICAgLy8gVHJhaXRlbWVudCBkZW1hbmRlIHLDqWfDqW7DqXJlciBIVE1MXG4gICAgICAgICAgICBidG5SZWdlbmVyYXRlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHJSZWdlbmVyYXRlID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyUmVnZW5lcmF0ZS5vcGVuKFwiR0VUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK3JlZ2VuZXJhdGVIVE1MKTtcbiAgICAgICAgICAgICAgICB4aHJSZWdlbmVyYXRlLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHJSZWdlbmVyYXRlLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhoclJlZ2VuZXJhdGUuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyUmVnZW5lcmF0ZS5zZW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2Q3Jhc2gsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTsiLCIvLyBGT05DVElPTlMgVVRJTEVTIEFVIFNUT0NLQUdFIExPQ0FMIChTRVNTSU9OLCBDT09LSUVTLCBJTkRFWERCLCBFVEMuKVxuLy8gUmV2ZW5pciBwb3VyIGfDqXJlciBsZSBjYXMgb8O5IGxvY2FsLnN0b3JhZ2Ugbidlc3QgcGFzIGNvbm51IHBvdXIgdXRpbGlzZXIgY29va2llXG4gICAgXG5leHBvcnQgY29uc3Qgc2F2ZUxvY2FseSA9IChuYW1lLCBkYXRhKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2FseSA9IChuYW1lLCBqc29uPWZhbHNlKSA9Plxue1xuICAgIGlmKGpzb24pXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxvY2FseSA9IChuYW1lKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50ID0gKGVsdFBhcmVudCwgZWx0VHlwZSwgZWx0Q29udGVudD1cIlwiLCBlbHRJZD1cIlwiLCBlbHRDbGFzcz1bXSwgZWx0QXR0cmlidXRlcz17fSwgcmVwbGFjZT10cnVlKSA9Plxue1xuICAgIGlmKGlzRW1wdHkoZWx0VHlwZSkgfHwgaXNFbXB0eShlbHRQYXJlbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsdFR5cGUpO1xuICAgICAgICBcbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0SWQpKS8vIHRlc3RlciBzaSBsJ2lkIG4nZXN0IHBhcyBkw6lqw6AgdXRpbGlzw6kgZGFucyBsZSBET00gP1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pZD1lbHRJZDtcblxuICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsdENsYXNzKSAmJiBlbHRDbGFzcy5sZW5ndGghPTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiBlbHRDbGFzcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWx0Q2xhc3NbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodHlwZW9mIGVsdEF0dHJpYnV0ZXMgPT09IFwib2JqZWN0XCIpIC8vICEhIHRvdXMgbGVzIG9iamV0cyBuZSBzb250IHBhcyBva1xuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGF0dHJpYnV0TmFtZSBpbiBlbHRBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0TmFtZSwgZWx0QXR0cmlidXRlc1thdHRyaWJ1dE5hbWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdENvbnRlbnQpKVxuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUw9ZWx0Q29udGVudC5yZXBsYWNlKC9cXG4vZyxcIjxicj5cIik7Ly8gaW5uZXJIVE1MIHBlcm1ldCBkJ2Fqb3V0ZXIgZHUgdGV4dGUgYXlhbnQgbHVpLW3Dqm1lIGRlcyBiYWxpc2VzLCBldGMuXG4gICAgICAgICAgICBcbiAgICAgICAgaWYocmVwbGFjZSlcbiAgICAgICAgICAgIGVsdFBhcmVudC5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgZWx0UGFyZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpO1xuICAgIH0gICAgXG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCBzaXRlVXJsLCB0aGVtZSB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyAgY2hlY2tMb2dpblJvdXRlLCB0aW1lRGlmZmVyZW5jZU1heCwgdGltZURpZmZlcmVuY2VNaW4sIHVzZXJSb3V0ZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL3VzZXJzLmpzXCI7XG5cbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRUaW1lRGlmZmVyZW5jZSA9ICgpID0+XG57XG4gICAgLy8gbXVsdGlwbGllciBwYXIgLTEsIGNhciBjJ2VzdCBjZSBxdSdpbCBmYXV0IFwiYWpvdXRlclwiIMOgIGwnaGV1cmUgVVRDIHBvdXIgcmV2ZW5pciBlbiBoZXVyZSBsb2NhbGUgcXVpIG0naW50w6lyZXNzZSBldCBub24gbCdpbnZlcnNlXG4gICAgY29uc3QgdGltZUxvY2FsPW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSotMTtcbiAgICBpZih0aW1lTG9jYWwgPiB0aW1lRGlmZmVyZW5jZU1heCB8fCB0aW1lTG9jYWwgPCB0aW1lRGlmZmVyZW5jZU1pbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gdGltZUxvY2FsO1xufVxuXG4vLyBKJ3V0aWxpc2UgbGUgc3RvY2thZ2UgbG9jYWwgZHUgbmF2aWdhdGV1ciBwb3VyIGVucmVnaXN0cmVyIGxlcyBkb25uw6llcyBwZXJtZXR0YW50IGRlIHJlY29ubmHDrnRyZSBsJ3V0aWxpc2F0ZXVyIHBhciBsYSBzdWl0ZVxuLy8gU2V1bCBsZSBzZXJ2ZXVyIHBvdXJyYSB2w6lyaWZpZXIgcXVlIGxlcyBpZGVudGlmaWFudHMgc29udCAodG91am91cnMpIHZhbGlkZXMuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9ICh1c2VySWQsIHRva2VuLCBkdXJhdGlvblRTKSA9Plxue1xuICAgIGNvbnN0IHN0b3JhZ2VVc2VyPVxuICAgIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25UU1xuICAgIH1cbiAgICBzYXZlTG9jYWx5KFwidXNlclwiLCBzdG9yYWdlVXNlcik7XG59XG5cbi8vIFbDqXJpZmllIHF1J2lsIHkgYSBkZXMgZG9ubsOpZXMgbG9jYWxlcyBjb25jZXJuYW50IGxlIHLDqXN1bHRhdCBkJ3VuIHF1aXogb3UgZCd1biBncm91cGUgZGUgcXVpenNcbi8vIEV0IGxlcyBham91dGUgYXV4IGRvbm7DqWVzIGVudm95w6llcyBwYXIgbGVzIGZvcm11bGFpcmVzIGQnaW5zY3JpcHRpb24vY29ubmV4aW9uIHNpIGMnZXN0IGxlIGNhc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyRGF0YXMgPSAoZGF0YXMpID0+XG57XG4gICAgY29uc3QgbGFzdEFuc3dlcj1nZXRMb2NhbHkoXCJsYXN0QW5zd2VyXCIpO1xuICAgIGlmKCFpc0VtcHR5KGxhc3RBbnN3ZXIpKVxuICAgIHtcbiAgICAgICAgY29uc3QgYW5zd2VyPUpTT04ucGFyc2UobGFzdEFuc3dlcik7XG4gICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLmR1cmF0aW9uPWFuc3dlci5kdXJhdGlvbjtcbiAgICAgICAgICAgIGRhdGFzLm5iQ29ycmVjdEFuc3dlcnM9YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICBkYXRhcy5uYlF1ZXN0aW9ucz1hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSlcbiAgICAgICAgICAgICAgICBkYXRhcy5RdWVzdGlvbm5haXJlSWQ9YW5zd2VyLlF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhcy5Hcm91cElkPWFuc3dlci5Hcm91cElkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gQ2V0dGUgZm9uY3Rpb24gdGVzdGUgbGEgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgZCd1bmUgcGFnZVxuLy8gT24gcGV1dCBmb3VybmlzIHVuZSBsaXN0ZSBkZSBzdGF0dXRzIGFjY2VwdMOpcyAoc2kgdmlkZSA9IHRvdXMpLCBhaW5zaSBxdSd1bmUgdXJsIGRlIHJlZGlyZWN0aW9uIHNpIG5vbiBjb25uZWN0w6ksIHVuIG1lc3NhZ2UgZCdlcnJldXIgw6AgYWZmaWNoZXIgc3VyIGxhIHBhZ2UgZGUgZGVzdGluYXRpb24gZXQgbCd1cmwgc3VyIGxhcXVlbGxlIHJldmVuaXIgdW5lIGZvaXMgY29ubmVjdMOpXG5leHBvcnQgY29uc3QgY2hlY2tTZXNzaW9uID0gYXN5bmMgKHN0YXR1cz1bXSwgdXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhcz1nZXRMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICBpZihpc0VtcHR5KHVzZXJEYXRhcykpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1KU09OLnBhcnNlKHVzZXJEYXRhcyk7XG4gICAgICAgICAgICBpZihpc0VtcHR5KHVzZXIuaWQpIHx8wqBpc0VtcHR5KHVzZXIudG9rZW4pIHx8IGlzRW1wdHkodXNlci5kdXJhdGlvbikgfHwgdXNlci5kdXJhdGlvbiA8IERhdGUubm93KCkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tMb2dpblJvdXRlK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuaXNWYWxpZCAmJiByZXNwb25zZS5pZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmlkPT09dXNlci5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm5hbWU9cmVzcG9uc2UubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLmxhbmd1YWdlPXJlc3BvbnNlLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIudGltZURpZmZlcmVuY2U9cmVzcG9uc2UudGltZURpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5zdGF0dXM9cmVzcG9uc2Uuc3RhdHVzOy8vIGMnZXN0IGxlIHRva2VuIHF1aSBzZXJ0IMOgIHbDqXJpZmllciBsZSBzdGF0dXQgw6AgY2hhcXVlIHJlcXXDqnRlIMOgIGwnQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUxvY2FseShcInVzZXJcIiwgdXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2kgaWwgcydhZ2l0IGQndW4gXCJ1c2VyXCIgZXQgcXVlIHNvbiBhYm9ubmVtZW50IGEgZXhwaXLDqSwgamUgbGUgcmVkaXJpZ2UgdmVycyBsYSBjYWlzc2UgOi0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzPT09XCJ1c2VyXCIgJiYgcmVzcG9uc2UubmJEYXlzT2sgPD0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybEFjY291bnQ9c2l0ZVVybCtcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZih1cmxBY2NvdW50KT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZStcIiNzdWJzY3JpYmVcIik7Ly8gcGFzc8OpZSBkaXJlY3RlbWVudCBpY2ksIGwnYW5jcmUgI3N1YnNjcmliZSBuZSBmb25jdGlvbm5lIHBhcyAhP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0dXMubGVuZ3RoIT09MCAmJiBzdGF0dXMuaW5kZXhPZihyZXNwb25zZS5zdGF0dXMpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHhoci5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyBDZXR0ZSBmb25jdGlvbiBzZXJ0IMOgIGxhIHByw6ljw6lkZW50ZSBlbiBjYXMgZGUgY29ubmV4aW9uIG5vbiB2YWxpZGVcbmNvbnN0IHJlZGlyZWN0VXNlciA9ICh1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKVxuICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCBtZXNzYWdlKTtcbiAgICBpZighaXNFbXB0eSh1cmxXYW50ZWQpKVxuICAgICAgICBzYXZlTG9jYWx5KFwidXJsXCIsIHVybFdhbnRlZCk7XG4gICAgaWYoIWlzRW1wdHkodXJsUmVkaXJlY3Rpb24pKVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHVybFJlZGlyZWN0aW9uKTtcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmUkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9tZU1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYnRuU2VuZFJlc3BvbnNlIiwiYnRuU2hhcmVRdWl6VHh0IiwiYnRuU2hhcmVRdWl6TWFpbEJvZHkiLCJidG5TaG93UXVlc3Rpb25uYWlyZSIsImNvcnJlY3RBbnN3ZXJUeHQiLCJlc3RpbWF0ZWRUaW1lIiwiZXN0aW1hdGVkVGltZU9wdGlvbiIsInNob3J0IiwibWVkaXVtIiwibG9uZyIsImV4cGxhbmF0aW9uQmVmb3JlVHh0IiwiaGF2ZUJlZW5QdWJsaXNoZWQiLCJoYXZlQmVlblJlZ2VuZXJhdGVkIiwibGFzdFVwZGF0ZWQiLCJsaW5rR29Ub05leHRFbGVtZW50IiwibGlua0dvVG9RdWl6IiwibmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZSIsIm5lZWRFc3RpbWF0ZWRUaW1lIiwibmVlZEdyb3VwSWZSYW5rIiwibmVlZEludHJvZHVjdGlvbiIsIm5lZWRLbm93SWZJc1B1Ymxpc2hlZCIsIm5lZWRMYW5ndWFnZSIsIm5lZWROb3RUb29Mb25nVGl0bGUiLCJuZWVkTnVtYmVyRm9yUmFuayIsIm5lZWRUaXRsZSIsIm5lZWRVbmlxdWVVcmwiLCJuZWVkVXJsIiwibmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSIsIm5leHRRdWVzdGlvbm5haXJlc0xpc3QiLCJxdWVzdGlvbm5haXJlc05hbWUiLCJxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkIiwicHVibGlzaGVkQXQiLCJwdWJsaXNoZWRCeSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVSZXN1bHRUaXRsZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQiLCJzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCIsIndyb25nQW5zd2VyVHh0IiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImRpdk1haW4iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGl2Q3Jhc2giLCJkaXZNZXNzYWdlIiwiZGl2UXVlc3Rpb25uYWlyZXMiLCJidG5SZWdlbmVyYXRlIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJtZXNzYWdlIiwiY29sb3IiLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJhZGRFbGVtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwicmVtb3ZlTG9jYWx5IiwieGhyU3RhdHMiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwibWFwVGV4dCIsIk5CX1VTRVJTXzI0SCIsIm5iTmV3VXNlcnMyNEgiLCJOQl9TVUJTQ1JJUFRJT05TXzI0SCIsIlN1YnNjcmlwdGlvbnMiLCJuYlN1YnNjcmlwdGlvbnMyNEgiLCJOQl9VU0VSU19ERUxFVEVEXzI0SCIsIm5iRGVsZXRlZFVzZXJzMjRIIiwiTkJfQU5TV0VSU18yNEgiLCJBbnN3ZXJzIiwibmJBbnN3ZXJzMjRIIiwiTkJfVVNFUlNfVE9UIiwibmJOZXdVc2Vyc1RvdCIsIk5CX1NVQlNDUklQVElPTlNfVE9UIiwibmJTdWJzY3JpcHRpb25zVG90IiwiTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIiwibmJTdWJzY3JpcHRpb25zUHJlbWl1bSIsIk5CX0FOU1dFUlNfVE9UIiwibmJBbnN3ZXJzVG90IiwiTkJfVVNFUlNfREVMRVRFRF9UT1QiLCJuYkRlbGV0ZWRVc2Vyc1RvdCIsIk5CX1VTRVJTX0RFTEVURURfVkFMSURFRCIsIm5iRGVsZXRlZFVzZXJzV2FzVmFsaWRlZCIsIk5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSIsIm5iRGVsZXRlZFVzZXJzVG90V2FzUHJlbWl1bSIsInNldFJlcXVlc3RIZWFkZXIiLCJ0b2tlbiIsInNlbmQiLCJ4aHJOZXh0UXVlc3Rpb25uYWlyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsaXN0SFRNTCIsImRheVN0ciIsIm9wdGlvbnNEYXlTdHIiLCJ3ZWVrZGF5IiwiSW50bCIsIkRhdGVUaW1lRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZVB1Ymxpc2hpbmciLCJpc1B1Ymxpc2hhYmxlIiwiZGF0ZU5lZWRlZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwicHJldmVudERlZmF1bHQiLCJ4aHJSZWdlbmVyYXRlIiwiY29uc29sZSIsImVycm9yIiwic2F2ZUxvY2FseSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiaW5uZXJIVE1MIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJsaW5rIiwiaG9tZVBhZ2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwibm93IiwieGhyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7O0FDbEZBLE1BQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURBQUQsQ0FBOUI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0lDLFFBQU0sRUFBRSwyQkFEWjtBQUVJQyxTQUFPLEVBQUUsdUJBRmI7QUFHSUMsV0FBUyxFQUFFLFNBSGY7QUFJSUMsWUFBVSxFQUFFLG1CQUpoQjtBQUtJQyxZQUFVLEVBQUUsbUJBTGhCO0FBTUlDLGFBQVcsRUFBRSx1QkFOakI7QUFPSUMsV0FBUyxFQUFFLElBUGY7QUFRSUMsT0FBSyxFQUFFLFdBUlg7QUFRd0I7QUFDcEJDLGdCQUFjLEVBQUUsQ0FB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RSxxQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osV0FsQ0QsTUFvQ0E7QUFDSXRHLGtGQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0F5Ryx3QkFBWSxDQUFDTixjQUFELEVBQWlCNUcsT0FBakIsRUFBMEI2RyxTQUExQixDQUFaO0FBQ0FFLG1CQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixTQTVDRDs7QUE2Q0FLLFdBQUcsQ0FBQ1csT0FBSixHQUFjLE1BQU1mLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDWSxVQUFMLENBQTFCOztBQUNBWixXQUFHLENBQUNyRSxJQUFKO0FBQ0g7QUFDSjtBQUNKLEdBdEVNLENBQVA7QUF1RUgsQ0F6RU0sQyxDQTBFUDs7QUFDQSxNQUFNbUUsWUFBWSxHQUFHLENBQUNOLGNBQUQsRUFBaUI1RyxPQUFqQixFQUEwQjZHLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDek4sMkRBQU8sQ0FBQzRHLE9BQUQsQ0FBWCxFQUNJbUUsb0VBQVUsQ0FBQyxTQUFELEVBQVluRSxPQUFaLENBQVY7QUFDSixNQUFHLENBQUM1RywyREFBTyxDQUFDeU4sU0FBRCxDQUFYLEVBQ0kxQyxvRUFBVSxDQUFDLEtBQUQsRUFBUTBDLFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQ3pOLDJEQUFPLENBQUN3TixjQUFELENBQVgsRUFDSWUsTUFBTSxDQUFDQyxRQUFQLENBQWdCRSxNQUFoQixDQUF1QmxCLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvaG9tZU1hbmFnZXIuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaG9tZU1hbmFnZXIuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3F1ZXN0aW9ubmFpcmVcIjogXCIuLi9sYW5nL2ZyL3F1ZXN0aW9ubmFpcmUuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9xdWVzdGlvbm5haXJlJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsLy8gZMOpcGxhY8OpIGRhbnMgZ2VuZXJhbC5qc1xuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIiwvL2lkZW1cbiAgICBidG5TZW5kUmVzcG9uc2U6IFwiVGVzdGV6IHZvcyByw6lwb25zZXMuXCIsXG4gICAgYnRuU2hhcmVRdWl6VHh0OiBcIlBhcnRhZ2VyIHZpYSBcIixcbiAgICBidG5TaGFyZVF1aXpNYWlsQm9keTogXCJCb25qb3VyLCUwQSUwQVZvaWNpJTIwdW4lMjBsaWVuJTIwaW50ZXJuZXQlMjBxdWklMjBkZXZyYWl0JTIwdCdpbnTDqXJlc3NlciA6JTBBXCIsICAgIFxuICAgIGJ0blNob3dRdWVzdGlvbm5haXJlOiBcIlLDqXBvbmRyZSBhdSBxdWl6ICFcIixcbiAgICBjb3JyZWN0QW5zd2VyVHh0OiBcIkJvbm5lIHLDqXBvbnNlXCIsXG4gICAgZXN0aW1hdGVkVGltZTogXCJEdXLDqWUgZGUgbGVjdHVyZSBlc3RpbcOpZSA6IFwiLFxuICAgIGVzdGltYXRlZFRpbWVPcHRpb24gOlxuICAgIHtcbiAgICAgICAgc2hvcnQ6IFwiY291cnRlXCIsXG4gICAgICAgIG1lZGl1bTogXCJtb3llbm5lXCIsXG4gICAgICAgIGxvbmc6IFwibG9uZ3VlXCJcbiAgICB9LFxuICAgIGV4cGxhbmF0aW9uQmVmb3JlVHh0OiBcIkV4dHJhaXQgOlwiLFxuICAgIGhhdmVCZWVuUHVibGlzaGVkIDogXCI6TkIgbm91dmVhdXggcXVlc3Rpb25uYWlyZXMgb250IMOpdMOpIHB1Ymxpw6lzLlwiLFxuICAgIGhhdmVCZWVuUmVnZW5lcmF0ZWQgOiBcIkxlcyBwYWdlcyBIVE1MIGRlICNOQjEgcXVlc3Rpb25uYWlyZXMgb3Ugw6lsw6ltZW50cyBkZSBncm91cGVzLCAjTkIyIHF1aXpzIGdyb3Vww6lzIGV0ICNOQjMgdGjDqG1lcyBvbnQgw6l0w6kgcmVnw6luw6lyw6lzLlwiLFxuICAgIGxhc3RVcGRhdGVkOiBcIkRlcm5pw6hyZSBtaXNlIMOgIGpvdXIsIGxlIFwiLFxuICAgIGxpbmtHb1RvTmV4dEVsZW1lbnQ6IFwiQXJ0aWNsZSBzdWl2YW50XCIsXG4gICAgbGlua0dvVG9RdWl6OiBcIkFjY8OpZGVyIGF1IHF1aXpcIiwgICAgXG4gICAgbmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZTogXCJMYSBkYXRlIGRlIHB1YmxpY2F0aW9uIGZvdXJuaWUgbidhIHBhcyB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5lZWRFc3RpbWF0ZWRUaW1lOiBcIk1lcmNpIGRlIHPDqWxlY3Rpb25uZXIgdW5lIGVzdGltYXRpb24gZGUgbGEgZHVyw6llIGRlIGNlIHF1aXouXCIsXG4gICAgbmVlZEdyb3VwSWZSYW5rOiBcIlZvdXMgYXZleiBzYWlzaSB1biByYW5nIGRlIGNsYXNzZW1lbnQsIHNhbnMgc8OpbGVjdGlvbm5lciBsZSBncm91cGUgZHUgcXVpei5cIixcbiAgICBuZWVkSW50cm9kdWN0aW9uOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGV4dGUgZCdpbnRyb2R1Y3Rpb24gw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkS25vd0lmSXNQdWJsaXNoZWQ6IFwiSWwgZmF1dCBzYXZvaXIgc2kgY2UgcXVpeiBlc3QgcHVibGnDqS5cIixcbiAgICBuZWVkTGFuZ3VhZ2U6IFwiVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyIGxhIGxhbmd1ZSBkZSBjZSBxdWl6LlwiLFxuICAgIG5lZWROb3RUb29Mb25nVGl0bGU6IFwiTGUgdGl0cmUgZHUgcXVpeiBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROdW1iZXJGb3JSYW5rOiBcIlZvdXMgZGV2ZXogc2Fpc2lyIHVuIG5vbWJyZSBlbnRpZXIgcG91ciBsZSByYW5nIGRlIGNlIHF1ZXN0aW9ubmFpcmUgZGFucyBzb24gZ3JvdXBlLlwiLCAgICAgICAgICAgICAgXG4gICAgbmVlZFRpdGxlOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGl0cmUgw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkVW5pcXVlVXJsOiBcIkwndXJsIGR1IHF1aXogZG9pdCDDqnRyZSB1bmlxdWUuXCIsXG4gICAgbmVlZFVybDogXCJNZXJjaSBkZSBmb3VybmlyIGwndXJsIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZTogXCJQcm9jaGFpbmUgZGF0ZSBzYW5zIHF1aXogcHJvZ3JhbW3DqSA6IFwiLFxuICAgIG5leHRRdWVzdGlvbm5haXJlc0xpc3Q6IFwiTGVzICNOQiBwcm9jaGFpbnMgcXVpenMgZGV2YW50IMOqdHJlIHB1Ymxpw6lzXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNOYW1lOiBcInF1aXpcIixcbiAgICBxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkOiBcIlF1aXogaW5jb21wbGV0XCIsXG4gICAgcHVibGlzaGVkQXQ6IFwiLCBsZVwiLFxuICAgIHB1Ymxpc2hlZEJ5OiBcIlF1aXogcHVibGnDqSBwYXJcIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlUmVzdWx0VGl0bGUgOiBcIlLDqXN1bHRhdCBwb3VyIHZvdHJlIHJlY2hlcmNoZVwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQgOiBcIkF1Y3VuIHF1aXogbidhIMOpdMOpIHRyb3V2w6kgcG91ciB2b3RyZSByZWNoZXJjaGUuXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQgOiBcIklsIHkgYSAjTkIgYXJ0aWNsZSNTIGNvcnJlc3BvbmRhbnQgw6Agdm90cmUgcmVjaGVyY2hlIDpcIixcbiAgICB3cm9uZ0Fuc3dlclR4dDogXCJNYXV2YWlzZSByw6lwb25zZVwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgRCdBQ0NVRUlMIFBPVVIgTEVTIEdFU1RJT05OQUlSRVNcblxuLy8vIFbDqXJpZmllIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlIHZlcnMgbGUgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIHNpIGNlIG4nZXN0IHBhcyBsZSBjYXMuXG4vLy8gU2kgYydlc3Qgb2ssIG9uIHLDqWN1cMOocmUgbGVzIHN0YXRzIGfDqW7DqXJhbGVzIGV0IGRlcyBkZXJuacOocmVzIDI0SCBldCBsZXMgYWZmaWNoZVxuLy8vIE9uIGxpc3RlIGVuc3VpdGUgbGVzIHByb2NoYWlucyBxdWl6cyBkZXZhbnQgw6p0cmUgcHVibGnDqXMgZW4gZmFpc2FudCByZXNzb3J0aXIgY2V1eCBkZXZhbnQgw6p0cmUgY29tcGzDqXTDqXMgKyBsYSBwcm9jaGFpbmUgZGF0ZSBzYW5zIHF1aXpcbi8vLyBVbiBtZW51IHBlcm1ldCDDoCBsJ3V0aWxpc2F0ZXVyIGQnYWNjw6lkZXIgYXV4IGZvcm11bGFpcmVzIHBlcm1ldHRhbnQgZGUgZ8OpcmVyIGxlcyBxdWl6cyBldCBsZXMgY29tcHRlcyB1dGlsaXNhdGV1cnMgZXQgYWJvbm5lbWVudHNcbi8vLyBVbiBtZXNzYWdlIHZlbmFudCBkJ3VuZSBhdXRyZSBwYWdlIHBldXQgYXVzc2kgw6p0cmUgw6AgYWZmaWNoZXIgbG9ycyBkdSBwcmVtaWVyIGNoYXJnZW1lbnQuXG5cbi8vLyBUZW1wb3JhaXJlbWVudCwgYydlc3QgaWNpIGF1c3NpIHF1ZSBsJ29uIHBldXQgcsOpZ8OpbsOpcmVyIHRvdXQgbGUgSFRNTCAtPiDDoCB0ZXJtZSBkYW5zIGhvbWVBZG1pbiAhXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuaW1wb3J0IHsgZ2V0QWRtaW5TdGF0cywgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi9jb25maWcvdXNlcnMuanNcIjtcbmltcG9ydCB7IGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMsIHF1ZXN0aW9ubmFpcmVSb3V0ZXMsIHJlZ2VuZXJhdGVIVE1MIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9xdWVzdGlvbm5haXJlcy5qc1wiO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbi8vIEZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdCwgaXNFbXB0eSwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi90b29scy9tYWluXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgbm90QWxsb3dlZCwgc2VydmVyRXJyb3IsIHN0YXRzQWRtaW4gfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSwgbmV4dFF1ZXN0aW9ubmFpcmVzTGlzdCwgcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9xdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgeyB3ZWxjb21lTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG4vLyBQcmluY2lwYXV4IMOpbMOpbWVudHMgZHUgRE9NIG1hbmlwdWzDqXMgOlxuY29uc3QgZGl2TWFpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWFpbi1jb250ZW50XCIpO1xuY29uc3QgZGl2Q3Jhc2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNyYXNoXCIpO1xuY29uc3QgZGl2TWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWVzc2FnZVwiKTtcbmNvbnN0IGRpdlF1ZXN0aW9ubmFpcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWVzdGlvbm5haXJlc1wiKTtcbmNvbnN0IGJ0blJlZ2VuZXJhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndhbnRSZWdlbmVyYXRlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7ICAgICAgICBcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcIm1hbmFnZXJcIiwgXCJhZG1pblwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbm90QWxsb3dlZCwgY29sb3I6XCJlcnJvclwiIH0pO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlQWNjb3VudExpbmsodXNlci5zdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKTtcbiAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJoMlwiLCB3ZWxjb21lTWVzc2FnZS5yZXBsYWNlKFwiI05BTUVcIiwgdXNlci5uYW1lKSk7XG4gICAgICAgICAgICBkaXZNYWluLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2V0TG9jYWx5KFwibWVzc2FnZVwiKSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5tZXNzYWdlLCBcIlwiLCBbZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5jb2xvcl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJtZXNzYWdlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTGVzIHN0YXRzIHN1ciBsZXMgY29tcHRlcyB1dGlsaXNhdGV1cnMgOlxuICAgICAgICAgICAgY29uc3QgeGhyU3RhdHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoclN0YXRzLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrZ2V0QWRtaW5TdGF0cyk7XG4gICAgICAgICAgICB4aHJTdGF0cy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfVVNFUlNfMjRIIDogcmVzcG9uc2UubmJOZXdVc2VyczI0SCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9TVUJTQ1JJUFRJT05TXzI0SCA6IHJlc3BvbnNlLlN1YnNjcmlwdGlvbnMubmJTdWJzY3JpcHRpb25zMjRILFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX1VTRVJTX0RFTEVURURfMjRIIDogcmVzcG9uc2UubmJEZWxldGVkVXNlcnMyNEgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfQU5TV0VSU18yNEggOiByZXNwb25zZS5BbnN3ZXJzLm5iQW5zd2VyczI0SCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9VU0VSU19UT1QgOiByZXNwb25zZS5uYk5ld1VzZXJzVG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX1NVQlNDUklQVElPTlNfVE9UIDogcmVzcG9uc2UuU3Vic2NyaXB0aW9ucy5uYlN1YnNjcmlwdGlvbnNUb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIDogcmVzcG9uc2UuU3Vic2NyaXB0aW9ucy5uYlN1YnNjcmlwdGlvbnNQcmVtaXVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CX0FOU1dFUlNfVE9UIDogcmVzcG9uc2UuQW5zd2Vycy5uYkFuc3dlcnNUb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfVVNFUlNfREVMRVRFRF9UT1QgOiByZXNwb25zZS5uYkRlbGV0ZWRVc2Vyc1RvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgOiByZXNwb25zZS5uYkRlbGV0ZWRVc2Vyc1dhc1ZhbGlkZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIDogcmVzcG9uc2UubmJEZWxldGVkVXNlcnNUb3RXYXNQcmVtaXVtXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgcmVwbGFjZUFsbChzdGF0c0FkbWluLCBtYXBUZXh0KSwgXCJcIiwgXCJcIiwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyU3RhdHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgeGhyU3RhdHMuc2VuZCgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBMZXMgcXVlc3Rpb25uYWlyZXMgYmllbnTDtHQgcHVibGnDqXMgOiAgICAgIFxuICAgICAgICAgICAgY29uc3QgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMub3BlbihcIkdFVFwiLCBhcGlVcmwrcXVlc3Rpb25uYWlyZVJvdXRlcytnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzKTtcbiAgICAgICAgICAgIHhock5leHRRdWVzdGlvbm5haXJlcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzKSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3RIVE1MPVwiXCIsIGRheVN0ciwgb3B0aW9uc0RheVN0ciA9IHsgd2Vla2RheTogJ2xvbmcnfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZS5xdWVzdGlvbm5haXJlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlTdHI9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgb3B0aW9uc0RheVN0cikuZm9ybWF0KG5ldyBEYXRlKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmRhdGVQdWJsaXNoaW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEhUTUwrPVwiPGxpPlwiK2RheVN0citcIiBcIitkYXRlRm9ybWF0KHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmRhdGVQdWJsaXNoaW5nLCBhdmFpbGFibGVMYW5nc1swXSkrXCI6IDxhIGhyZWY9J1wiK2NvbmZpZ1RlbXBsYXRlLnF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UrXCI/aWQ9XCIrcmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uaWQrXCInPlwiK3Jlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLnRpdGxlK1wiPC9hPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmlzUHVibGlzaGFibGU9PT1mYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEhUTUwrPVwiIDxzcGFuIGNsYXNzPSdlcnJvcic+KFwiK3F1ZXN0aW9ubmFpcmVOZWVkQmVDb21wbGV0ZWQrXCIpPC9saT5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCI8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UucXVlc3Rpb25uYWlyZXMubGVuZ3RoIT09MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcImgyXCIsIG5leHRRdWVzdGlvbm5haXJlc0xpc3QucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25uYWlyZXMsIFwiaDRcIiwgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZStkYXRlRm9ybWF0KHJlc3BvbnNlLmRhdGVOZWVkZWQsIGF2YWlsYWJsZUxhbmdzWzBdKSwgXCJcIiwgW1wiaW5mb1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZRdWVzdGlvbm5haXJlcywgXCJ1bFwiLCBsaXN0SFRNTCwgXCJcIiwgXCJcIiwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pOyBcbiAgICAgICAgICAgIHhock5leHRRdWVzdGlvbm5haXJlcy5zZW5kKCk7XG5cbiAgICAgICAgICAgIC8vIFRyYWl0ZW1lbnQgZGVtYW5kZSByw6lnw6luw6lyZXIgSFRNTFxuICAgICAgICAgICAgYnRuUmVnZW5lcmF0ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyUmVnZW5lcmF0ZSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoclJlZ2VuZXJhdGUub3BlbihcIkdFVFwiLCBhcGlVcmwrcXVlc3Rpb25uYWlyZVJvdXRlcytyZWdlbmVyYXRlSFRNTCk7XG4gICAgICAgICAgICAgICAgeGhyUmVnZW5lcmF0ZS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLm1lc3NhZ2UhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyUmVnZW5lcmF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJSZWdlbmVyYXRlLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhoclJlZ2VuZXJhdGUuc2VuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/homeUser.app.js b/front/public/JS/homeUser.app.js index 7b50902..74616a7 100644 --- a/front/public/JS/homeUser.app.js +++ b/front/public/JS/homeUser.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -626,9 +635,9 @@ module.exports = { correctAnswerTxt: "Bonne réponse", estimatedTime: "Durée de lecture estimée : ", estimatedTimeOption: { - "short": "courte", + short: "courte", medium: "moyenne", - "long": "longue" + long: "longue" }, explanationBeforeTxt: "Extrait :", haveBeenPublished: ":NB nouveaux questionnaires ont été publiés.", @@ -790,99 +799,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1696,4 +1684,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9xdWVzdGlvbm5haXJlJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmVhY2Nlc3MkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvcXVlc3Rpb25uYWlyZS5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlYWNjZXNzLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9tZVVzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwiLCJjaGVja1Jlc3BvbnNlc091cHV0TWVkaXVtIiwiY2hlY2tSZXNwb25zZXNPdXB1dFN1Y2Nlc3MiLCJuZWVkSW50ZWdlck51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkSW50ZWdlck51bWJlclNlY29uZGVzUmVzcG9uc2UiLCJuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTWF4TnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNYXhOdW1iZXJDb3JyZWN0UmVzcG9uc2VzIiwibmVlZE1pbk51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyU2Vjb25kZXNSZXNwb25zZSIsIm5vUHJldmlvdXNBbnN3ZXIiLCJwcmV2aW91c0Fuc3dlcnNMaW5lIiwicHJldmlvdXNBbnN3ZXJzU3RhdHMiLCJwcmV2aW91c0Fuc3dlcnNUaXRsZSIsInJlc3BvbnNlU2F2ZWRFcnJvciIsInJlc3BvbnNlU2F2ZWRNZXNzYWdlIiwic3RhdHNVc2VyIiwid2FudFRvU2F2ZVJlc3BvbnNlcyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYnRuU2VuZFJlc3BvbnNlIiwiYnRuU2hhcmVRdWl6VHh0IiwiYnRuU2hhcmVRdWl6TWFpbEJvZHkiLCJidG5TaG93UXVlc3Rpb25uYWlyZSIsImNvcnJlY3RBbnN3ZXJUeHQiLCJlc3RpbWF0ZWRUaW1lIiwiZXN0aW1hdGVkVGltZU9wdGlvbiIsIm1lZGl1bSIsImV4cGxhbmF0aW9uQmVmb3JlVHh0IiwiaGF2ZUJlZW5QdWJsaXNoZWQiLCJoYXZlQmVlblJlZ2VuZXJhdGVkIiwibGFzdFVwZGF0ZWQiLCJsaW5rR29Ub05leHRFbGVtZW50IiwibGlua0dvVG9RdWl6IiwibmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZSIsIm5lZWRFc3RpbWF0ZWRUaW1lIiwibmVlZEdyb3VwSWZSYW5rIiwibmVlZEludHJvZHVjdGlvbiIsIm5lZWRLbm93SWZJc1B1Ymxpc2hlZCIsIm5lZWRMYW5ndWFnZSIsIm5lZWROb3RUb29Mb25nVGl0bGUiLCJuZWVkTnVtYmVyRm9yUmFuayIsIm5lZWRUaXRsZSIsIm5lZWRVbmlxdWVVcmwiLCJuZWVkVXJsIiwibmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSIsIm5leHRRdWVzdGlvbm5haXJlc0xpc3QiLCJxdWVzdGlvbm5haXJlc05hbWUiLCJxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkIiwicHVibGlzaGVkQXQiLCJwdWJsaXNoZWRCeSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVSZXN1bHRUaXRsZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQiLCJzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCIsIndyb25nQW5zd2VyVHh0IiwibGFzdFF1ZXN0aW9ubmFpcmVzRm9yVXNlciIsIm5vdEZvdW5kIiwibm9RdWVzdGlvbm5haXJlQWNjZXNzIiwicXVlc3Rpb25uYWlyZVJldHJ5SW5mbyIsInF1ZXN0aW9ubmFpcmVSZXRyeUluZm9UeHQiLCJzZWFyY2hJc05vdExvbmdFbm91Z2giLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJteVN0cmluZyIsImlzRW1wdHkiLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1RlbXBsYXRlIiwiZGl2TWFpbiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZDcmFzaCIsImRpdk1lc3NhZ2UiLCJxdWl6SW50cm8iLCJxdWl6TGlzdGluZyIsInF1aXpQYWdpbmF0aW9uUHJldmlvdXMiLCJxdWl6UGFnaW5hdGlvbk5leHQiLCJmb3JtU2VhcmNoIiwiaW5wdXRCZWdpbiIsImJ0blJhbmRvbSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwibWVzc2FnZSIsImNvbG9yIiwid2luZG93IiwibG9jYXRpb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJhZGRFbGVtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwicmVtb3ZlTG9jYWx5Iiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwieGhyU3RhdHMiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwibmJBbnN3ZXJzIiwidHh0SW50cm8iLCJtYXBUZXh0IiwiTkJBTlNXRVJTIiwiTkJRVUVTVElPTk5BSVJFUyIsIm5iUXVlc3Rpb25uYWlyZXMiLCJOQlRPVFFVRVNUSU9OTkFJUkVTIiwiZ3JvdXBzIiwibmJQdWJsaXNoZWQiLCJuYldpdGhvdXRHcm91cFB1Ymxpc2hlZCIsIkFWR0RVUkFUSU9OIiwiYXZnRHVyYXRpb24iLCJBVkdDT1JSRUNUQU5TV0VSUyIsImF2Z0NvcnJlY3RBbnN3ZXJzIiwicmVwbGFjZUFsbCIsInNldFJlcXVlc3RIZWFkZXIiLCJ0b2tlbiIsInNlbmQiLCJ4aHJMYXN0UXVpenMiLCJuYlRvdCIsImh0bWwiLCJpbm5lckhUTUwiLCJxdWl6cyIsInNlbmRTZWFyY2giLCJ0eXBlIiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJTZWFyY2giLCJoYXNoIiwiYXNzaWduIiwiYmVnaW4iLCJwcmV2aW91c1BhZ2VFbHQiLCJnb0JhY2tSZXMiLCJuZXdCZWdpbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwicHJldmVudERlZmF1bHQiLCJlbmQiLCJuZXh0UGFnZUVsdCIsIm91dHB1dCIsInN0cmluZ2lmeSIsImNvbnNvbGUiLCJlcnJvciIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJub3ciLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ0aW1lRGlmZmVyZW5jZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsImluZGV4T2YiLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtR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SCxpQkFKRCxNQU1JQSxPQUFPLENBQUMsSUFBRCxDQUFQO0FBQ1A7QUFDSixhQXpCRCxNQTJCQTtBQUNJL0csb0ZBQVksQ0FBQyxNQUFELENBQVo7QUFDQWtILDBCQUFZLENBQUNOLGNBQUQsRUFBaUJ2SCxPQUFqQixFQUEwQndILFNBQTFCLENBQVo7QUFDQUUscUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFdBbENELE1Bb0NBO0FBQ0kvRyxrRkFBWSxDQUFDLE1BQUQsQ0FBWjtBQUNBa0gsd0JBQVksQ0FBQ04sY0FBRCxFQUFpQnZILE9BQWpCLEVBQTBCd0gsU0FBMUIsQ0FBWjtBQUNBRSxtQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osU0E1Q0Q7O0FBNkNBSyxXQUFHLENBQUNRLE9BQUosR0FBYyxNQUFNWixNQUFNLENBQUNJLEdBQUcsQ0FBQ1MsVUFBTCxDQUExQjs7QUFDQVQsV0FBRyxDQUFDdkYsSUFBSjtBQUNIO0FBQ0o7QUFDSixHQXRFTSxDQUFQO0FBdUVILENBekVNLEMsQ0EwRVA7O0FBQ0EsTUFBTXFGLFlBQVksR0FBRyxDQUFDTixjQUFELEVBQWlCdkgsT0FBakIsRUFBMEJ3SCxTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQy9OLDJEQUFPLENBQUN1RyxPQUFELENBQVgsRUFDSWtFLG9FQUFVLENBQUMsU0FBRCxFQUFZbEUsT0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDdkcsMkRBQU8sQ0FBQytOLFNBQUQsQ0FBWCxFQUNJdEQsb0VBQVUsQ0FBQyxLQUFELEVBQVFzRCxTQUFSLENBQVY7QUFDSixNQUFHLENBQUMvTiwyREFBTyxDQUFDOE4sY0FBRCxDQUFYLEVBQ0lySCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JpRCxNQUFoQixDQUF1Qm1FLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvaG9tZVVzZXIuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaG9tZVVzZXIuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvYW5zd2VyXCI6IFwiLi4vbGFuZy9mci9hbnN3ZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9hbnN3ZXIkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9xdWVzdGlvbm5haXJlXCI6IFwiLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvcXVlc3Rpb25uYWlyZSRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvcXVlc3Rpb25uYWlyZWFjY2Vzc1wiOiBcIi4uL2xhbmcvZnIvcXVlc3Rpb25uYWlyZWFjY2Vzcy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3F1ZXN0aW9ubmFpcmVhY2Nlc3MkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0RmFpbCA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEMnZXN0IGNlcnRhaW4sIHZvdXMgZmVyZXogbWlldXggbGEgcHJvY2hhaW5lIGZvaXMgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0gOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBwYXMgbWFsIGR1IHRvdXQgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQnJhdm8gISBSaWVuIG5lIHZvdXMgw6ljaGFwcGUgIVwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllciBkZSBzZWNvbmRlcy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IG5lIHBldXQgw6p0cmUgYXVzc2kgw6lsZXbDqS5cIixcbiAgICBuZWVkTWluTnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGluZsOpcmlldXIgw6AgMS5cIixcbiAgICBuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIG5lIHBldXQgw6p0cmUgc3Vww6lyaWV1ciBhdSBub21icmUgZGUgcXVlc3Rpb25zLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIDogXCJMYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UgbmUgcGV1dCDDqnRyZSBuw6lnYXRpdmUuXCIsXG4gICAgbm9QcmV2aW91c0Fuc3dlcjogXCJPbiBkaXJhaXQgcXVlIGMnZXN0IGxhIHByZW1pw6hyZSBmb2lzIHF1ZSB2b3VzIHLDqXBvbmRleiDDoCBjZSBxdWl6LiBCb25uZSBsZWN0dXJlICFcIixcbiAgICBwcmV2aW91c0Fuc3dlcnNMaW5lOiBcIkxlIERBVEVBTlNXRVIsIHZvdXMgYXZleiByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgTkJDT1JSRUNUQU5TV0VSUyBxdWVzdGlvbnMgc3VyIE5CUVVFU1RJT05TIGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1N0YXRzOiBcIkVuIG1veWVubmUsIHZvdXMgYXZleiByw6lwb25kdSDDoCBjZSBxdWl6IGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLCBlbiBheWFudCA8Yj5BVkdDT1JSRUNUQU5TV0VSUyAlIGRlIGJvbm5lcyByw6lwb25zZXM8L2I+LlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1RpdGxlOiBcIkJvbmpvdXIgI05PTSwgdm9pY2kgdm9zIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIMOgIGNlIHF1aXpcIixcbiAgICByZXNwb25zZVNhdmVkRXJyb3IgOiBcIkNlcGVuZGFudCB1bmUgZXJyZXVyIGEgw6l0w6kgcmVuY29udHLDqWUgZHVyYW50IGwnZW5yZWdpc3RyZW1lbnQgZGUgdm90cmUgcsOpc3VsdGF0LiA8YSBocmVmPScvI1VSTCc+QWNjw6hkZXIgw6AgdG91cyB2b3MgcXVpenM8L2E+LlwiLFxuICAgIHJlc3BvbnNlU2F2ZWRNZXNzYWdlIDogXCJWb3RyZSByw6lzdWx0YXQgYSDDqXTDqSBlbnJlZ2lzdHLDqS4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICBzdGF0c1VzZXI6IFwiVm91cyBhdmV6IGVucmVnaXN0csOpIDxiPk5CQU5TV0VSUyByw6lwb25zZVMxIMOgIE5CUVVFU1RJT05OQUlSRVMgcXVpelMyIGRpZmbDqXJlbnRTMzwvYj4gc3VyIGxlcyBOQlRPVFFVRVNUSU9OTkFJUkVTIHByb3Bvc8OpUzQgcGFyIGxlIHNpdGUuPGJyPkVuIG1veWVubmUsIHZvdXMgYXZleiBtaXMgQVZHRFVSQVRJT04gc2Vjb25kZXMgw6AgcsOpcG9uZHJlIGV0IGF2ZXogPGI+Y29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIEFWR0NPUlJFQ1RBTlNXRVJTICUgZGVzIHF1ZXN0aW9uczwvYj4uXCIsXG4gICAgd2FudFRvU2F2ZVJlc3BvbnNlczogXCJTaSB2b3VzIGxlIHNvdWhhaXRleiwgdm91cyBwb3V2ZXogPHU+PGI+c2F1dmVnYXJkZXIgdm90cmUgcsOpc3VsdGF0PC9iPjwvdT4gZW4gY3LDqWFudCB2b3RyZSBjb21wdGUgY2ktZGVzc291cy4gQ2VsYSB2b3VzIHBlcm1ldHRyYSBhdXNzaSBkZSA8dT48Yj5yZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIFxcXCJncmFpbmVzIGRlIGN1bHR1cmVcXFwiPC9iPjwvdT4gZGlyZWN0ZW1lbnQgc3VyIHZvdHJlIGUtbWFpbC5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLC8vIGTDqXBsYWPDqSBkYW5zIGdlbmVyYWwuanNcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsLy9pZGVtXG4gICAgYnRuU2VuZFJlc3BvbnNlOiBcIlRlc3RleiB2b3MgcsOpcG9uc2VzLlwiLFxuICAgIGJ0blNoYXJlUXVpelR4dDogXCJQYXJ0YWdlciB2aWEgXCIsXG4gICAgYnRuU2hhcmVRdWl6TWFpbEJvZHk6IFwiQm9uam91ciwlMEElMEFWb2ljaSUyMHVuJTIwbGllbiUyMGludGVybmV0JTIwcXVpJTIwZGV2cmFpdCUyMHQnaW50w6lyZXNzZXIgOiUwQVwiLCAgICBcbiAgICBidG5TaG93UXVlc3Rpb25uYWlyZTogXCJSw6lwb25kcmUgYXUgcXVpeiAhXCIsXG4gICAgY29ycmVjdEFuc3dlclR4dDogXCJCb25uZSByw6lwb25zZVwiLFxuICAgIGVzdGltYXRlZFRpbWU6IFwiRHVyw6llIGRlIGxlY3R1cmUgZXN0aW3DqWUgOiBcIixcbiAgICBlc3RpbWF0ZWRUaW1lT3B0aW9uIDpcbiAgICB7XG4gICAgICAgIHNob3J0OiBcImNvdXJ0ZVwiLFxuICAgICAgICBtZWRpdW06IFwibW95ZW5uZVwiLFxuICAgICAgICBsb25nOiBcImxvbmd1ZVwiXG4gICAgfSxcbiAgICBleHBsYW5hdGlvbkJlZm9yZVR4dDogXCJFeHRyYWl0IDpcIixcbiAgICBoYXZlQmVlblB1Ymxpc2hlZCA6IFwiOk5CIG5vdXZlYXV4IHF1ZXN0aW9ubmFpcmVzIG9udCDDqXTDqSBwdWJsacOpcy5cIixcbiAgICBoYXZlQmVlblJlZ2VuZXJhdGVkIDogXCJMZXMgcGFnZXMgSFRNTCBkZSAjTkIxIHF1ZXN0aW9ubmFpcmVzIG91IMOpbMOpbWVudHMgZGUgZ3JvdXBlcywgI05CMiBxdWl6cyBncm91cMOpcyBldCAjTkIzIHRow6htZXMgb250IMOpdMOpIHJlZ8OpbsOpcsOpcy5cIixcbiAgICBsYXN0VXBkYXRlZDogXCJEZXJuacOocmUgbWlzZSDDoCBqb3VyLCBsZSBcIixcbiAgICBsaW5rR29Ub05leHRFbGVtZW50OiBcIkFydGljbGUgc3VpdmFudFwiLFxuICAgIGxpbmtHb1RvUXVpejogXCJBY2PDqWRlciBhdSBxdWl6XCIsICAgIFxuICAgIG5lZWRDb3JyZWN0UHVibGlzaGluZ0RhdGU6IFwiTGEgZGF0ZSBkZSBwdWJsaWNhdGlvbiBmb3VybmllIG4nYSBwYXMgdW4gZm9ybWF0IHZhbGlkZS5cIixcbiAgICBuZWVkRXN0aW1hdGVkVGltZTogXCJNZXJjaSBkZSBzw6lsZWN0aW9ubmVyIHVuZSBlc3RpbWF0aW9uIGRlIGxhIGR1csOpZSBkZSBjZSBxdWl6LlwiLFxuICAgIG5lZWRHcm91cElmUmFuazogXCJWb3VzIGF2ZXogc2Fpc2kgdW4gcmFuZyBkZSBjbGFzc2VtZW50LCBzYW5zIHPDqWxlY3Rpb25uZXIgbGUgZ3JvdXBlIGR1IHF1aXouXCIsXG4gICAgbmVlZEludHJvZHVjdGlvbjogXCJNZXJjaSBkZSBmb3VybmlyIHVuIHRleHRlIGQnaW50cm9kdWN0aW9uIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmVlZEtub3dJZklzUHVibGlzaGVkOiBcIklsIGZhdXQgc2F2b2lyIHNpIGNlIHF1aXogZXN0IHB1Ymxpw6kuXCIsXG4gICAgbmVlZExhbmd1YWdlOiBcIlZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBsYSBsYW5ndWUgZGUgY2UgcXVpei5cIixcbiAgICBuZWVkTm90VG9vTG9uZ1RpdGxlOiBcIkxlIHRpdHJlIGR1IHF1aXogbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTnVtYmVyRm9yUmFuazogXCJWb3VzIGRldmV6IHNhaXNpciB1biBub21icmUgZW50aWVyIHBvdXIgbGUgcmFuZyBkZSBjZSBxdWVzdGlvbm5haXJlIGRhbnMgc29uIGdyb3VwZS5cIiwgICAgICAgICAgICAgIFxuICAgIG5lZWRUaXRsZTogXCJNZXJjaSBkZSBmb3VybmlyIHVuIHRpdHJlIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmVlZFVuaXF1ZVVybDogXCJMJ3VybCBkdSBxdWl6IGRvaXQgw6p0cmUgdW5pcXVlLlwiLFxuICAgIG5lZWRVcmw6IFwiTWVyY2kgZGUgZm91cm5pciBsJ3VybCDDoCB2b3RyZSBxdWl6LlwiLFxuICAgIG5leHREYXRlV2l0aG91dFF1ZXN0aW9ubmFpcmU6IFwiUHJvY2hhaW5lIGRhdGUgc2FucyBxdWl6IHByb2dyYW1tw6kgOiBcIixcbiAgICBuZXh0UXVlc3Rpb25uYWlyZXNMaXN0OiBcIkxlcyAjTkIgcHJvY2hhaW5zIHF1aXpzIGRldmFudCDDqnRyZSBwdWJsacOpc1wiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTmFtZTogXCJxdWl6XCIsXG4gICAgcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZDogXCJRdWl6IGluY29tcGxldFwiLFxuICAgIHB1Ymxpc2hlZEF0OiBcIiwgbGVcIixcbiAgICBwdWJsaXNoZWRCeTogXCJRdWl6IHB1Ymxpw6kgcGFyXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVJlc3VsdFRpdGxlIDogXCJSw6lzdWx0YXQgcG91ciB2b3RyZSByZWNoZXJjaGVcIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlV2l0aE5vUmVzdWx0IDogXCJBdWN1biBxdWl6IG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoUmVzdWx0IDogXCJJbCB5IGEgI05CIGFydGljbGUjUyBjb3JyZXNwb25kYW50IMOgIHZvdHJlIHJlY2hlcmNoZSA6XCIsXG4gICAgd3JvbmdBbnN3ZXJUeHQ6IFwiTWF1dmFpc2UgcsOpcG9uc2VcIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgbGFzdFF1ZXN0aW9ubmFpcmVzRm9yVXNlcjogXCJWb3MgZGVybmnDqHJlcyBsZWN0dXJlcyA6XCIsXG4gICAgbm90Rm91bmQgOiBcIkxlcyBpbmZvcm1hdGlvbnMgZCd1biBxdWVzdGlvbm5haXJlIGF0dHJpYnXDqSDDoCB1biBhYm9ubsOpIG4nb250IHBhcyDDqXTDqSB0cm91dsOpZXMgOiBcIixcbiAgICBub1F1ZXN0aW9ubmFpcmVBY2Nlc3M6IFwiQXVjdW4gYXJ0aWNsZSBuZSB2b3VzIGEgZW5jb3JlIMOpdMOpIGVudm95w6kgcGFyIGUtbWFpbC4gU2FucyBkb3V0ZSwgdmVuZXotdm91cyBkZSBjcsOpZXIgdm90cmUgY29tcHRlLiBFbiBhdHRlbmRhbnQgZCdlbiByZWNldm9pciwgdm91cyBwb3V2ZXogbWlldXggZMOpY291dnJpciBsZSBzaXRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvYS1wcm9wb3MuaHRtbFxcXCI+ZW4gbGlzYW50IGxhIHBhZ2Ugw6AgcHJvcG9zPC9hPiBvdSBlbmNvcmUgY29tbWVuY2VyIMOgIHBhcmNvdXJpciBsaWJyZW1lbnQgc29uIGNvbnRlbnUgw6AgbCdhaWRlIGR1IG1vdGV1ciBkZSByZWNoZXJjaGUgY2ktZGVzc3VzLlwiLFxuICAgIHF1ZXN0aW9ubmFpcmVSZXRyeUluZm8gOiBcIlZvdXMgYXZleiBkw6lqw6AgcmXDp3UgdG91cyBsZXMgYXJ0aWNsZXMgZXQgcXVpenMgcHVibGnDqXMgw6AgY2Ugam91ci4gRW4gYXR0ZW5kYW50IGxhIHB1YmxpY2F0aW9uIGRlIG5vdXZlYXV4IGNvbnRlbnVzLCB2b3VzIHBvdXZleiBwZXV0LcOqdHJlIHLDqWVzc2F5ZXIgZGUgcsOpcG9uZHJlIGF1IHF1aXogc3VpdmFudCA/XCIsXG4gICAgcXVlc3Rpb25uYWlyZVJldHJ5SW5mb1R4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyBhdmV6IGTDqWrDoCByZcOndSB0b3VzIGxlcyBxdWl6cyBwdWJsacOpcyDDoCBjZSBqb3VyICEgRW4gYXR0ZW5kYW50IGxhIHB1YmxpY2F0aW9uIGRlIG5vdXZlYXV4IHF1aXpzLCB2b3VzIHBvdXZleiBwZXV0LcOqdHJlIHLDqWVzc2F5ZXIgbGUgc3VpdmFudCA/XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIHNlYXJjaElzTm90TG9uZ0Vub3VnaCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QtY2zDqXMgZCdhdSBtb2lucyBkZXV4IGNhcmFjdMOocmVzIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgRCdBQ0NVRUlMIERFIEwnVVRJTElTQVRFVVJcblxuLy8vIFbDqXJpZmllciBxdWUgbCd1dGlsaXNhdGV1ciBlc3QgYmllbiBjb25uZWN0w6ksIGEgbGUgYm9uIHN0YXR1dCBldCBsZSByZWRpcmlnZXIgdmVycyBsZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24gc2kgY2Ugbidlc3QgcGFzIGxlIGNhcy5cbi8vLyBTaSBjJ2VzdCBvaywgb24gcsOpY3Vww6hyZSBzZXMgaW5mb3MgZXQgc3RhdHMgKyBsZXMgZGVybmllcnMgcXVpenMgYXV4cXVlbHMgaWwgYSBhY2PDqHMsIG1haXMgbidhIHBhcyByw6lwb25kdS5cbi8vLyBVbiBtb3RldXIgZGUgcmVjaGVyY2hlIHBlcm1ldCBkJ29idGVuaXIgZCdhdXRyZXMgcXVpenMgcGFybWkgY2V1eCBwdWJsacOpcy5cbi8vLyBQb3VyIGwnYWZmaWNoYWdlIGRlcyBsaXN0aW5ncyBkZSBxdWl6LCBsJ0FQSSByZXRvdXJuZSBkaXJlY3RlbWVudCBkdSBodG1sLlxuLy8vIFVuIG1lbnUgcGVybWV0IMOgIGwndXRpbGlzYXRldXIgZCdhY2PDqWRlciDDoCBsYSBtb2RpZmljYXRpb24gZGUgc2VzIGluZm9zLCBkZSBzb24gYWJvbm5lbWVudCwgZXRjLlxuLy8vIFVuIG1lc3NhZ2UgdmVuYW50IGQndW5lIGF1dHJlIHBhZ2UgcGV1dCBhdXNzaSDDqnRyZSDDoCBhZmZpY2hlciBsb3JzIGR1IHByZW1pZXIgY2hhcmdlbWVudC5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5jb25zdCB7IGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUsIGdldFN0YXRzQW5zd2VycywgcXVlc3Rpb25uYWlyZVJvdXRlcywgc2VhcmNoUXVlc3Rpb25uYWlyZXMsIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgfSA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXNcIik7XG5jb25zdCB7IGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gRm9uY3Rpb25zIHV0aWxlcyBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCByZXBsYWNlQWxsIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzdGF0c1VzZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvYW5zd2VyXCIpO1xuY29uc3QgeyBuZXh0UGFnZSwgcHJldmlvdXNQYWdlLCBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9xdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgeyBsYXN0UXVlc3Rpb25uYWlyZXNGb3JVc2VyLCBub1F1ZXN0aW9ubmFpcmVBY2Nlc3MgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvcXVlc3Rpb25uYWlyZWFjY2Vzc1wiKTtcbmNvbnN0IHsgbmVlZEJlQ29ubmVjdGVkLCB3ZWxjb21lTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG4vLyBQcmluY2lwYXV4IMOpbMOpbWVudHMgZHUgRE9NIG1hbmlwdWzDqXMgOlxuY29uc3QgZGl2TWFpbj0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZDcmFzaD0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBxdWl6SW50cm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1aXpzSW50cm9cIik7XG5jb25zdCBxdWl6TGlzdGluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVpenNMaXN0XCIpO1xuY29uc3QgcXVpelBhZ2luYXRpb25QcmV2aW91cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicHJldmlvdXNcIik7XG5jb25zdCBxdWl6UGFnaW5hdGlvbk5leHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5leHRcIik7XG5jb25zdCBmb3JtU2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hcIik7XG5jb25zdCBpbnB1dEJlZ2luID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiZWdpblwiKTtcbmNvbnN0IGJ0blJhbmRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmFuZG9tXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgbidlc3QgcGFzIGNvbm5lY3TDqSwgcGFzIGxhIHBlaW5lIGQnYWxsZXIgKyBsb2luIDpcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcInVzZXJcIl0sIFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlLCB7IG1lc3NhZ2U6IG5lZWRCZUNvbm5lY3RlZCwgY29sb3I6XCJlcnJvclwiIH0sIHdpbmRvdy5sb2NhdGlvbik7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcImgxXCIsIHdlbGNvbWVNZXNzYWdlLnJlcGxhY2UoXCIjTkFNRVwiLCB1c2VyLm5hbWUpKTtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNhdGlvbiBkdSBmb3JtdWxhaXJlIGRlIHJlY2hlcmNoZSA6XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoeyBcInNlYXJjaFF1ZXN0aW9ubmFpcmVzXCI6IHNlYXJjaFF1ZXN0aW9ubmFpcmVzIH0sIGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgLy8gTGVzIHN0YXRzIDogICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IHhoclN0YXRzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICB4aHJTdGF0cy5vcGVuKFwiR0VUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldFN0YXRzQW5zd2Vycyt1c2VyLmlkKTtcbiAgICAgICAgICAgIHhoclN0YXRzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLm5iQW5zd2VycykgJiYgcmVzcG9uc2UubmJBbnN3ZXJzIT09MCkvLyBwYXMgZGUgc3RhdHMgc2kgYXVjdW5lIHLDqXBvbnNlICFcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dEludHJvPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBUZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CQU5TV0VSUyA6IHJlc3BvbnNlLm5iQW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CUVVFU1RJT05OQUlSRVMgOiByZXNwb25zZS5uYlF1ZXN0aW9ubmFpcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJUT1RRVUVTVElPTk5BSVJFUyA6IHJlc3BvbnNlLmdyb3Vwcy5uYlB1Ymxpc2hlZCtyZXNwb25zZS5xdWVzdGlvbm5haXJlcy5uYldpdGhvdXRHcm91cFB1Ymxpc2hlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWR0RVUkFUSU9OIDogcmVzcG9uc2UuYXZnRHVyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBBVkdDT1JSRUNUQU5TV0VSUyA6IHJlc3BvbnNlLmF2Z0NvcnJlY3RBbnN3ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGEgc2l0dWF0aW9uIGVzdCBwbHVyaWVsbGUuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPXJlcGxhY2VBbGwoc3RhdHNVc2VyLCBtYXBUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPShyZXNwb25zZS5uYkFuc3dlcnMgPiAxKSA/IHR4dEludHJvLnJlcGxhY2UoXCJTMVwiLCBcInNcIikgOiB0eHRJbnRyby5yZXBsYWNlKFwiUzFcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eHRJbnRybz0ocmVzcG9uc2UubmJRdWVzdGlvbm5haXJlcyA+IDEpID8gdHh0SW50cm8ucmVwbGFjZShcIlMyXCIsIFwic1wiKS5yZXBsYWNlKFwiUzNcIiwgXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIlMyXCIsIFwiXCIpLnJlcGxhY2UoXCJTM1wiLCBcInNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eHRJbnRybz0obWFwVGV4dC5OQlRPVFFVRVNUSU9OTkFJUkVTID4gMSkgPyB0eHRJbnRyby5yZXBsYWNlKFwiUzRcIiwgXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIlM0XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgdHh0SW50cm8sIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhoclN0YXRzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pOyBcbiAgICAgICAgICAgIHhoclN0YXRzLnNlbmQoKTtcblxuICAgICAgICAgICAgLy8gUGFyIGTDqWZhdXQsIG9uIGFmZmljaGUgZGVzIGRlcm5pZXJzIMOpbMOpbWVudHMgc3VwcG9zw6lzIGx1cyBwYXIgbCd1dGlsaXNhdGV1ciA6XG4gICAgICAgICAgICBjb25zdCB4aHJMYXN0UXVpenMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhockxhc3RRdWl6cy5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2dldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZStcIlwiK3VzZXIuaWQrXCIvXCIrMCtcIi9cIitjb25maWdUZW1wbGF0ZS5uYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlK1wiL2h0bWxcIik7XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLm5iVG90ID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpekludHJvLCBcInBcIiwgbm9RdWVzdGlvbm5haXJlQWNjZXNzLCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocmVzcG9uc2UuaHRtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpJbnRybywgXCJwXCIsIGxhc3RRdWVzdGlvbm5haXJlc0ZvclVzZXIsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aXpMaXN0aW5nLmlubmVySFRNTD1yZXNwb25zZS5odG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pOy8vIHJldm9pciBzaSBpbnTDqXLDqnQgZCdhZmZpY2hlciBxdWVscXVlIGNob3NlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChxdWl6cywgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7IC8vIGlkZW1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMuc2VuZCgpO1xuXG4gICAgICAgICAgICAvLyBUcmFpdGVtZW50IGR1IGxhbmNlbWVudCBkJ3VuZSByZWNoZXJjaGVcbiAgICAgICAgICAgIC8vIExhIHJlY2hlcmNoZSBwZXV0IMOqdHJlIGxhbmPDqWUgdmlhIGxhIGJvdXRvbiBzdWJtaXQgb3UgdW4gbGllbiBkZSBwYWdpbmF0aW9uXG4gICAgICAgICAgICBjb25zdCBzZW5kU2VhcmNoID0gKHR5cGU9XCJzZWFyY2hcIikgPT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBxdWl6TGlzdGluZy5pbm5lckhUTUw9XCJcIitcIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyU2VhcmNoID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgaWYodHlwZT09XCJzZWFyY2hcIilcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK3NlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZT09XCJyYW5kb21cIilcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLm5iVG90KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5uYlRvdD09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpJbnRybywgXCJwXCIsIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiOy8vIHNpbm9uIGxlcyBoYXNoIHMnZW5jaGHDrm5lbnQuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWl6c0ludHJvXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHJlc3BvbnNlLmh0bWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0SW50cm89c2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5uYlRvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPShyZXNwb25zZS5uYlRvdCA+IDEpID8gdHh0SW50cm8ucmVwbGFjZShcIiNTXCIsXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIiNTXCIsXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpekludHJvLCBcInBcIiwgdHh0SW50cm8gLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpekxpc3RpbmcuaW5uZXJIVE1MPXJlc3BvbnNlLmh0bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVpenNJbnRyb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnaW5hdGlvbiBuw6ljZXNzYWlyZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIGNvbW1lbmNlIHBhciB2aWRlci4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWl6UGFnaW5hdGlvblByZXZpb3VzLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWl6UGFnaW5hdGlvbk5leHQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmJlZ2luICE9IDApLy8gcGV1dCByZXRvdXJuZXIgXCIwXCIgZXQgbm9uIDAgIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpQYWdpbmF0aW9uUHJldmlvdXMsIFwiYVwiLCBcIjw8IFwiK3ByZXZpb3VzUGFnZSAsIFwicHJldmlvdXNSZXNcIiwgW1wiYnV0dG9uXCJdLCB7IGhyZWY6IFwiI3NlYXJjaFwiIH0pOyAvLyByZXZvaXIsIGxlcyBcIjw8XCIgcG91cnJhaWVudCDDqnRyZSBnw6lyw6llcyBwYXIgbGUgQ1NTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2VFbHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwcmV2aW91c1Jlc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlIHJldG91ciDDoCBsYSBwYWdlIHByw6ljw6lkZW50ZSBwZXV0IHNlIGZhaXJlIGVuIGNsaXF1YW50IHN1ciBsZSBib3V0b24gb3UgdmlhIGwnaGlzdG9yaXF1ZSBkdSBuYXZpZ2F0ZXVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnb0JhY2tSZXMgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdCZWdpbj1yZXNwb25zZS5iZWdpbi1jb25maWdUZW1wbGF0ZS5uYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld0JlZ2luPDApIC8vIG5lIGRldnJhaXQgcGFzIMOqdHJlIHBvc3NpYmxlLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QmVnaW49MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJlZ2luXCIpLnZhbHVlPW5ld0JlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVpenNJbnRyb1wiKTsvLyBwb3VyIHJlbW9udGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VFbHQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvQmFja1JlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW1ibGUgcHJvdm9xdcOpIGJ1ZyA/Pz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29CYWNrUmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZW5kIDwgKHJlc3BvbnNlLm5iVG90LTEpKS8vIC0xLCBjYXIgdGFibGVhdSBjb21tZW5jZSDDoCAwICFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChxdWl6UGFnaW5hdGlvbk5leHQsIFwiYVwiLCBuZXh0UGFnZSsgXCIgPj5cIiwgXCJuZXh0UmVzXCIsIFtcImJ1dHRvblwiXSwgeyBocmVmOiBcIiNzZWFyY2hcIiB9LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGFnZUVsdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5leHRSZXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0UGFnZUVsdC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiZWdpblwiKS52YWx1ZT1yZXNwb25zZS5lbmQrMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjsvLyBzaW5vbiBsZXMgaGFzaCBzJ2VuY2hhw65uZW50Li4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWl6c0ludHJvXCIpOyAvLyBwb3VyIHJlbW9udGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhcy5vdXRwdXQ9XCJodG1sXCI7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBidG5SYW5kb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYmVnaW5cIikudmFsdWU9MDtcbiAgICAgICAgICAgICAgICBzZW5kU2VhcmNoKFwicmFuZG9tXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGZvcm1TZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJlZ2luXCIpLnZhbHVlPTA7XG4gICAgICAgICAgICAgICAgc2VuZFNlYXJjaCgpO1xuICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9xdWVzdGlvbm5haXJlJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmVhY2Nlc3MkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvcXVlc3Rpb25uYWlyZS5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlYWNjZXNzLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9tZVVzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkTWluTGVuZ3RoIiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJjaGVja1Jlc3BvbnNlc091cHV0RmFpbCIsImNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0iLCJjaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcyIsIm5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSIsIm5lZWRJbnRlZ2VyTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1pbk51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWROdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIiwibm9QcmV2aW91c0Fuc3dlciIsInByZXZpb3VzQW5zd2Vyc0xpbmUiLCJwcmV2aW91c0Fuc3dlcnNTdGF0cyIsInByZXZpb3VzQW5zd2Vyc1RpdGxlIiwicmVzcG9uc2VTYXZlZEVycm9yIiwicmVzcG9uc2VTYXZlZE1lc3NhZ2UiLCJzdGF0c1VzZXIiLCJ3YW50VG9TYXZlUmVzcG9uc2VzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJidG5TZW5kUmVzcG9uc2UiLCJidG5TaGFyZVF1aXpUeHQiLCJidG5TaGFyZVF1aXpNYWlsQm9keSIsImJ0blNob3dRdWVzdGlvbm5haXJlIiwiY29ycmVjdEFuc3dlclR4dCIsImVzdGltYXRlZFRpbWUiLCJlc3RpbWF0ZWRUaW1lT3B0aW9uIiwic2hvcnQiLCJtZWRpdW0iLCJsb25nIiwiZXhwbGFuYXRpb25CZWZvcmVUeHQiLCJoYXZlQmVlblB1Ymxpc2hlZCIsImhhdmVCZWVuUmVnZW5lcmF0ZWQiLCJsYXN0VXBkYXRlZCIsImxpbmtHb1RvTmV4dEVsZW1lbnQiLCJsaW5rR29Ub1F1aXoiLCJuZWVkQ29ycmVjdFB1Ymxpc2hpbmdEYXRlIiwibmVlZEVzdGltYXRlZFRpbWUiLCJuZWVkR3JvdXBJZlJhbmsiLCJuZWVkSW50cm9kdWN0aW9uIiwibmVlZEtub3dJZklzUHVibGlzaGVkIiwibmVlZExhbmd1YWdlIiwibmVlZE5vdFRvb0xvbmdUaXRsZSIsIm5lZWROdW1iZXJGb3JSYW5rIiwibmVlZFRpdGxlIiwibmVlZFVuaXF1ZVVybCIsIm5lZWRVcmwiLCJuZXh0RGF0ZVdpdGhvdXRRdWVzdGlvbm5haXJlIiwibmV4dFF1ZXN0aW9ubmFpcmVzTGlzdCIsInF1ZXN0aW9ubmFpcmVzTmFtZSIsInF1ZXN0aW9ubmFpcmVOZWVkQmVDb21wbGV0ZWQiLCJwdWJsaXNoZWRBdCIsInB1Ymxpc2hlZEJ5Iiwic2VhcmNoUXVlc3Rpb25uYWlyZVJlc3VsdFRpdGxlIiwic2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCIsInNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoUmVzdWx0Iiwid3JvbmdBbnN3ZXJUeHQiLCJsYXN0UXVlc3Rpb25uYWlyZXNGb3JVc2VyIiwibm90Rm91bmQiLCJub1F1ZXN0aW9ubmFpcmVBY2Nlc3MiLCJxdWVzdGlvbm5haXJlUmV0cnlJbmZvIiwicXVlc3Rpb25uYWlyZVJldHJ5SW5mb1R4dCIsInNlYXJjaElzTm90TG9uZ0Vub3VnaCIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsImlzRW1wdHkiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJ0cmltSWZOb3ROdWxsIiwibXlTdHJpbmciLCJzaG9ydGVuSWZMb25nZXJUaGFuIiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwicmVwbGFjZUFsbCIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsImdldFJhbmRvbUludCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlRm9ybWF0IiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwiZ2V0UGFzc3dvcmQiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJkaXZNYWluIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdkNyYXNoIiwiZGl2TWVzc2FnZSIsInF1aXpJbnRybyIsInF1aXpMaXN0aW5nIiwicXVpelBhZ2luYXRpb25QcmV2aW91cyIsInF1aXpQYWdpbmF0aW9uTmV4dCIsImZvcm1TZWFyY2giLCJpbnB1dEJlZ2luIiwiYnRuUmFuZG9tIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJtZXNzYWdlIiwiY29sb3IiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInVzZXIiLCJnZXRMb2NhbHkiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImFkZEVsZW1lbnQiLCJzdHlsZSIsImRpc3BsYXkiLCJyZW1vdmVMb2NhbHkiLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJ4aHJTdGF0cyIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJuYkFuc3dlcnMiLCJ0eHRJbnRybyIsIm1hcFRleHQiLCJOQkFOU1dFUlMiLCJOQlFVRVNUSU9OTkFJUkVTIiwibmJRdWVzdGlvbm5haXJlcyIsIk5CVE9UUVVFU1RJT05OQUlSRVMiLCJncm91cHMiLCJuYlB1Ymxpc2hlZCIsIm5iV2l0aG91dEdyb3VwUHVibGlzaGVkIiwiQVZHRFVSQVRJT04iLCJhdmdEdXJhdGlvbiIsIkFWR0NPUlJFQ1RBTlNXRVJTIiwiYXZnQ29ycmVjdEFuc3dlcnMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwidG9rZW4iLCJzZW5kIiwieGhyTGFzdFF1aXpzIiwibmJUb3QiLCJodG1sIiwiaW5uZXJIVE1MIiwicXVpenMiLCJzZW5kU2VhcmNoIiwidHlwZSIsImRhdGFzIiwiZ2V0RGF0YXNGcm9tSW5wdXRzIiwieGhyU2VhcmNoIiwiaGFzaCIsImFzc2lnbiIsImJlZ2luIiwicHJldmlvdXNQYWdlRWx0IiwiZ29CYWNrUmVzIiwibmV3QmVnaW4iLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZW5kIiwibmV4dFBhZ2VFbHQiLCJvdXRwdXQiLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImxvZyIsImxpbmsiLCJob21lUGFnZSIsImlucHV0c0NvbmYiLCJteUZvcm0iLCJlbGVtZW50cyIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsImVtcHlGb3JtIiwiY2hlY2tlZCIsImVtcHlBbmRIaWRlRm9ybSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwibm93IiwieGhyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxNQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENBQTlCOztBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJQyxRQUFNLEVBQUUsMkJBRFo7QUFFSUMsU0FBTyxFQUFFLHVCQUZiO0FBR0lDLFdBQVMsRUFBRSxTQUhmO0FBSUlDLFlBQVUsRUFBRSxtQkFKaEI7QUFLSUMsWUFBVSxFQUFFLG1CQUxoQjtBQU1JQyxhQUFXLEVBQUUsdUJBTmpCO0FBT0lDLFdBQVMsRUFBRSxJQVBmO0FBUUlDLE9BQUssRUFBRSxXQVJYO0FBUXdCO0FBQ3BCQyxnQkFBYyxFQUFFLENBQUMs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SWlFLG9FQUFVLENBQUMsU0FBRCxFQUFZakUsT0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDakgsMkRBQU8sQ0FBQ3dPLFNBQUQsQ0FBWCxFQUNJdEQsb0VBQVUsQ0FBQyxLQUFELEVBQVFzRCxTQUFSLENBQVY7QUFDSixNQUFHLENBQUN4TywyREFBTyxDQUFDdU8sY0FBRCxDQUFYLEVBQ0lwSCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JnRCxNQUFoQixDQUF1Qm1FLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvaG9tZVVzZXIuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaG9tZVVzZXIuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvYW5zd2VyXCI6IFwiLi4vbGFuZy9mci9hbnN3ZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9hbnN3ZXIkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9xdWVzdGlvbm5haXJlXCI6IFwiLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvcXVlc3Rpb25uYWlyZSRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvcXVlc3Rpb25uYWlyZWFjY2Vzc1wiOiBcIi4uL2xhbmcvZnIvcXVlc3Rpb25uYWlyZWFjY2Vzcy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3F1ZXN0aW9ubmFpcmVhY2Nlc3MkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0RmFpbCA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEMnZXN0IGNlcnRhaW4sIHZvdXMgZmVyZXogbWlldXggbGEgcHJvY2hhaW5lIGZvaXMgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0gOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBwYXMgbWFsIGR1IHRvdXQgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQnJhdm8gISBSaWVuIG5lIHZvdXMgw6ljaGFwcGUgIVwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllciBkZSBzZWNvbmRlcy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IG5lIHBldXQgw6p0cmUgYXVzc2kgw6lsZXbDqS5cIixcbiAgICBuZWVkTWluTnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGluZsOpcmlldXIgw6AgMS5cIixcbiAgICBuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIG5lIHBldXQgw6p0cmUgc3Vww6lyaWV1ciBhdSBub21icmUgZGUgcXVlc3Rpb25zLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIDogXCJMYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UgbmUgcGV1dCDDqnRyZSBuw6lnYXRpdmUuXCIsXG4gICAgbm9QcmV2aW91c0Fuc3dlcjogXCJPbiBkaXJhaXQgcXVlIGMnZXN0IGxhIHByZW1pw6hyZSBmb2lzIHF1ZSB2b3VzIHLDqXBvbmRleiDDoCBjZSBxdWl6LiBCb25uZSBsZWN0dXJlICFcIixcbiAgICBwcmV2aW91c0Fuc3dlcnNMaW5lOiBcIkxlIERBVEVBTlNXRVIsIHZvdXMgYXZleiByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgTkJDT1JSRUNUQU5TV0VSUyBxdWVzdGlvbnMgc3VyIE5CUVVFU1RJT05TIGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1N0YXRzOiBcIkVuIG1veWVubmUsIHZvdXMgYXZleiByw6lwb25kdSDDoCBjZSBxdWl6IGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLCBlbiBheWFudCA8Yj5BVkdDT1JSRUNUQU5TV0VSUyAlIGRlIGJvbm5lcyByw6lwb25zZXM8L2I+LlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1RpdGxlOiBcIkJvbmpvdXIgI05PTSwgdm9pY2kgdm9zIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIMOgIGNlIHF1aXpcIixcbiAgICByZXNwb25zZVNhdmVkRXJyb3IgOiBcIkNlcGVuZGFudCB1bmUgZXJyZXVyIGEgw6l0w6kgcmVuY29udHLDqWUgZHVyYW50IGwnZW5yZWdpc3RyZW1lbnQgZGUgdm90cmUgcsOpc3VsdGF0LiA8YSBocmVmPScvI1VSTCc+QWNjw6hkZXIgw6AgdG91cyB2b3MgcXVpenM8L2E+LlwiLFxuICAgIHJlc3BvbnNlU2F2ZWRNZXNzYWdlIDogXCJWb3RyZSByw6lzdWx0YXQgYSDDqXTDqSBlbnJlZ2lzdHLDqS4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICBzdGF0c1VzZXI6IFwiVm91cyBhdmV6IGVucmVnaXN0csOpIDxiPk5CQU5TV0VSUyByw6lwb25zZVMxIMOgIE5CUVVFU1RJT05OQUlSRVMgcXVpelMyIGRpZmbDqXJlbnRTMzwvYj4gc3VyIGxlcyBOQlRPVFFVRVNUSU9OTkFJUkVTIHByb3Bvc8OpUzQgcGFyIGxlIHNpdGUuPGJyPkVuIG1veWVubmUsIHZvdXMgYXZleiBtaXMgQVZHRFVSQVRJT04gc2Vjb25kZXMgw6AgcsOpcG9uZHJlIGV0IGF2ZXogPGI+Y29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIEFWR0NPUlJFQ1RBTlNXRVJTICUgZGVzIHF1ZXN0aW9uczwvYj4uXCIsXG4gICAgd2FudFRvU2F2ZVJlc3BvbnNlczogXCJTaSB2b3VzIGxlIHNvdWhhaXRleiwgdm91cyBwb3V2ZXogPHU+PGI+c2F1dmVnYXJkZXIgdm90cmUgcsOpc3VsdGF0PC9iPjwvdT4gZW4gY3LDqWFudCB2b3RyZSBjb21wdGUgY2ktZGVzc291cy4gQ2VsYSB2b3VzIHBlcm1ldHRyYSBhdXNzaSBkZSA8dT48Yj5yZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIFxcXCJncmFpbmVzIGRlIGN1bHR1cmVcXFwiPC9iPjwvdT4gZGlyZWN0ZW1lbnQgc3VyIHZvdHJlIGUtbWFpbC5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLC8vIGTDqXBsYWPDqSBkYW5zIGdlbmVyYWwuanNcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsLy9pZGVtXG4gICAgYnRuU2VuZFJlc3BvbnNlOiBcIlRlc3RleiB2b3MgcsOpcG9uc2VzLlwiLFxuICAgIGJ0blNoYXJlUXVpelR4dDogXCJQYXJ0YWdlciB2aWEgXCIsXG4gICAgYnRuU2hhcmVRdWl6TWFpbEJvZHk6IFwiQm9uam91ciwlMEElMEFWb2ljaSUyMHVuJTIwbGllbiUyMGludGVybmV0JTIwcXVpJTIwZGV2cmFpdCUyMHQnaW50w6lyZXNzZXIgOiUwQVwiLCAgICBcbiAgICBidG5TaG93UXVlc3Rpb25uYWlyZTogXCJSw6lwb25kcmUgYXUgcXVpeiAhXCIsXG4gICAgY29ycmVjdEFuc3dlclR4dDogXCJCb25uZSByw6lwb25zZVwiLFxuICAgIGVzdGltYXRlZFRpbWU6IFwiRHVyw6llIGRlIGxlY3R1cmUgZXN0aW3DqWUgOiBcIixcbiAgICBlc3RpbWF0ZWRUaW1lT3B0aW9uIDpcbiAgICB7XG4gICAgICAgIHNob3J0OiBcImNvdXJ0ZVwiLFxuICAgICAgICBtZWRpdW06IFwibW95ZW5uZVwiLFxuICAgICAgICBsb25nOiBcImxvbmd1ZVwiXG4gICAgfSxcbiAgICBleHBsYW5hdGlvbkJlZm9yZVR4dDogXCJFeHRyYWl0IDpcIixcbiAgICBoYXZlQmVlblB1Ymxpc2hlZCA6IFwiOk5CIG5vdXZlYXV4IHF1ZXN0aW9ubmFpcmVzIG9udCDDqXTDqSBwdWJsacOpcy5cIixcbiAgICBoYXZlQmVlblJlZ2VuZXJhdGVkIDogXCJMZXMgcGFnZXMgSFRNTCBkZSAjTkIxIHF1ZXN0aW9ubmFpcmVzIG91IMOpbMOpbWVudHMgZGUgZ3JvdXBlcywgI05CMiBxdWl6cyBncm91cMOpcyBldCAjTkIzIHRow6htZXMgb250IMOpdMOpIHJlZ8OpbsOpcsOpcy5cIixcbiAgICBsYXN0VXBkYXRlZDogXCJEZXJuacOocmUgbWlzZSDDoCBqb3VyLCBsZSBcIixcbiAgICBsaW5rR29Ub05leHRFbGVtZW50OiBcIkFydGljbGUgc3VpdmFudFwiLFxuICAgIGxpbmtHb1RvUXVpejogXCJBY2PDqWRlciBhdSBxdWl6XCIsICAgIFxuICAgIG5lZWRDb3JyZWN0UHVibGlzaGluZ0RhdGU6IFwiTGEgZGF0ZSBkZSBwdWJsaWNhdGlvbiBmb3VybmllIG4nYSBwYXMgdW4gZm9ybWF0IHZhbGlkZS5cIixcbiAgICBuZWVkRXN0aW1hdGVkVGltZTogXCJNZXJjaSBkZSBzw6lsZWN0aW9ubmVyIHVuZSBlc3RpbWF0aW9uIGRlIGxhIGR1csOpZSBkZSBjZSBxdWl6LlwiLFxuICAgIG5lZWRHcm91cElmUmFuazogXCJWb3VzIGF2ZXogc2Fpc2kgdW4gcmFuZyBkZSBjbGFzc2VtZW50LCBzYW5zIHPDqWxlY3Rpb25uZXIgbGUgZ3JvdXBlIGR1IHF1aXouXCIsXG4gICAgbmVlZEludHJvZHVjdGlvbjogXCJNZXJjaSBkZSBmb3VybmlyIHVuIHRleHRlIGQnaW50cm9kdWN0aW9uIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmVlZEtub3dJZklzUHVibGlzaGVkOiBcIklsIGZhdXQgc2F2b2lyIHNpIGNlIHF1aXogZXN0IHB1Ymxpw6kuXCIsXG4gICAgbmVlZExhbmd1YWdlOiBcIlZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBsYSBsYW5ndWUgZGUgY2UgcXVpei5cIixcbiAgICBuZWVkTm90VG9vTG9uZ1RpdGxlOiBcIkxlIHRpdHJlIGR1IHF1aXogbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTnVtYmVyRm9yUmFuazogXCJWb3VzIGRldmV6IHNhaXNpciB1biBub21icmUgZW50aWVyIHBvdXIgbGUgcmFuZyBkZSBjZSBxdWVzdGlvbm5haXJlIGRhbnMgc29uIGdyb3VwZS5cIiwgICAgICAgICAgICAgIFxuICAgIG5lZWRUaXRsZTogXCJNZXJjaSBkZSBmb3VybmlyIHVuIHRpdHJlIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmVlZFVuaXF1ZVVybDogXCJMJ3VybCBkdSBxdWl6IGRvaXQgw6p0cmUgdW5pcXVlLlwiLFxuICAgIG5lZWRVcmw6IFwiTWVyY2kgZGUgZm91cm5pciBsJ3VybCDDoCB2b3RyZSBxdWl6LlwiLFxuICAgIG5leHREYXRlV2l0aG91dFF1ZXN0aW9ubmFpcmU6IFwiUHJvY2hhaW5lIGRhdGUgc2FucyBxdWl6IHByb2dyYW1tw6kgOiBcIixcbiAgICBuZXh0UXVlc3Rpb25uYWlyZXNMaXN0OiBcIkxlcyAjTkIgcHJvY2hhaW5zIHF1aXpzIGRldmFudCDDqnRyZSBwdWJsacOpc1wiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTmFtZTogXCJxdWl6XCIsXG4gICAgcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZDogXCJRdWl6IGluY29tcGxldFwiLFxuICAgIHB1Ymxpc2hlZEF0OiBcIiwgbGVcIixcbiAgICBwdWJsaXNoZWRCeTogXCJRdWl6IHB1Ymxpw6kgcGFyXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVJlc3VsdFRpdGxlIDogXCJSw6lzdWx0YXQgcG91ciB2b3RyZSByZWNoZXJjaGVcIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlV2l0aE5vUmVzdWx0IDogXCJBdWN1biBxdWl6IG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoUmVzdWx0IDogXCJJbCB5IGEgI05CIGFydGljbGUjUyBjb3JyZXNwb25kYW50IMOgIHZvdHJlIHJlY2hlcmNoZSA6XCIsXG4gICAgd3JvbmdBbnN3ZXJUeHQ6IFwiTWF1dmFpc2UgcsOpcG9uc2VcIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgbGFzdFF1ZXN0aW9ubmFpcmVzRm9yVXNlcjogXCJWb3MgZGVybmnDqHJlcyBsZWN0dXJlcyA6XCIsXG4gICAgbm90Rm91bmQgOiBcIkxlcyBpbmZvcm1hdGlvbnMgZCd1biBxdWVzdGlvbm5haXJlIGF0dHJpYnXDqSDDoCB1biBhYm9ubsOpIG4nb250IHBhcyDDqXTDqSB0cm91dsOpZXMgOiBcIixcbiAgICBub1F1ZXN0aW9ubmFpcmVBY2Nlc3M6IFwiQXVjdW4gYXJ0aWNsZSBuZSB2b3VzIGEgZW5jb3JlIMOpdMOpIGVudm95w6kgcGFyIGUtbWFpbC4gU2FucyBkb3V0ZSwgdmVuZXotdm91cyBkZSBjcsOpZXIgdm90cmUgY29tcHRlLiBFbiBhdHRlbmRhbnQgZCdlbiByZWNldm9pciwgdm91cyBwb3V2ZXogbWlldXggZMOpY291dnJpciBsZSBzaXRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvYS1wcm9wb3MuaHRtbFxcXCI+ZW4gbGlzYW50IGxhIHBhZ2Ugw6AgcHJvcG9zPC9hPiBvdSBlbmNvcmUgY29tbWVuY2VyIMOgIHBhcmNvdXJpciBsaWJyZW1lbnQgc29uIGNvbnRlbnUgw6AgbCdhaWRlIGR1IG1vdGV1ciBkZSByZWNoZXJjaGUgY2ktZGVzc3VzLlwiLFxuICAgIHF1ZXN0aW9ubmFpcmVSZXRyeUluZm8gOiBcIlZvdXMgYXZleiBkw6lqw6AgcmXDp3UgdG91cyBsZXMgYXJ0aWNsZXMgZXQgcXVpenMgcHVibGnDqXMgw6AgY2Ugam91ci4gRW4gYXR0ZW5kYW50IGxhIHB1YmxpY2F0aW9uIGRlIG5vdXZlYXV4IGNvbnRlbnVzLCB2b3VzIHBvdXZleiBwZXV0LcOqdHJlIHLDqWVzc2F5ZXIgZGUgcsOpcG9uZHJlIGF1IHF1aXogc3VpdmFudCA/XCIsXG4gICAgcXVlc3Rpb25uYWlyZVJldHJ5SW5mb1R4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyBhdmV6IGTDqWrDoCByZcOndSB0b3VzIGxlcyBxdWl6cyBwdWJsacOpcyDDoCBjZSBqb3VyICEgRW4gYXR0ZW5kYW50IGxhIHB1YmxpY2F0aW9uIGRlIG5vdXZlYXV4IHF1aXpzLCB2b3VzIHBvdXZleiBwZXV0LcOqdHJlIHLDqWVzc2F5ZXIgbGUgc3VpdmFudCA/XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIHNlYXJjaElzTm90TG9uZ0Vub3VnaCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QtY2zDqXMgZCdhdSBtb2lucyBkZXV4IGNhcmFjdMOocmVzIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgRCdBQ0NVRUlMIERFIEwnVVRJTElTQVRFVVJcblxuLy8vIFbDqXJpZmllciBxdWUgbCd1dGlsaXNhdGV1ciBlc3QgYmllbiBjb25uZWN0w6ksIGEgbGUgYm9uIHN0YXR1dCBldCBsZSByZWRpcmlnZXIgdmVycyBsZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24gc2kgY2Ugbidlc3QgcGFzIGxlIGNhcy5cbi8vLyBTaSBjJ2VzdCBvaywgb24gcsOpY3Vww6hyZSBzZXMgaW5mb3MgZXQgc3RhdHMgKyBsZXMgZGVybmllcnMgcXVpenMgYXV4cXVlbHMgaWwgYSBhY2PDqHMsIG1haXMgbidhIHBhcyByw6lwb25kdS5cbi8vLyBVbiBtb3RldXIgZGUgcmVjaGVyY2hlIHBlcm1ldCBkJ29idGVuaXIgZCdhdXRyZXMgcXVpenMgcGFybWkgY2V1eCBwdWJsacOpcy5cbi8vLyBQb3VyIGwnYWZmaWNoYWdlIGRlcyBsaXN0aW5ncyBkZSBxdWl6LCBsJ0FQSSByZXRvdXJuZSBkaXJlY3RlbWVudCBkdSBodG1sLlxuLy8vIFVuIG1lbnUgcGVybWV0IMOgIGwndXRpbGlzYXRldXIgZCdhY2PDqWRlciDDoCBsYSBtb2RpZmljYXRpb24gZGUgc2VzIGluZm9zLCBkZSBzb24gYWJvbm5lbWVudCwgZXRjLlxuLy8vIFVuIG1lc3NhZ2UgdmVuYW50IGQndW5lIGF1dHJlIHBhZ2UgcGV1dCBhdXNzaSDDqnRyZSDDoCBhZmZpY2hlciBsb3JzIGR1IHByZW1pZXIgY2hhcmdlbWVudC5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5jb25zdCB7IGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUsIGdldFN0YXRzQW5zd2VycywgcXVlc3Rpb25uYWlyZVJvdXRlcywgc2VhcmNoUXVlc3Rpb25uYWlyZXMsIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgfSA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXNcIik7XG5jb25zdCB7IGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gRm9uY3Rpb25zIHV0aWxlcyBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5LCByZXBsYWNlQWxsIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzdGF0c1VzZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvYW5zd2VyXCIpO1xuY29uc3QgeyBuZXh0UGFnZSwgcHJldmlvdXNQYWdlLCBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9xdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgeyBsYXN0UXVlc3Rpb25uYWlyZXNGb3JVc2VyLCBub1F1ZXN0aW9ubmFpcmVBY2Nlc3MgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvcXVlc3Rpb25uYWlyZWFjY2Vzc1wiKTtcbmNvbnN0IHsgbmVlZEJlQ29ubmVjdGVkLCB3ZWxjb21lTWVzc2FnZSB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi91c2VyXCIpO1xuXG4vLyBQcmluY2lwYXV4IMOpbMOpbWVudHMgZHUgRE9NIG1hbmlwdWzDqXMgOlxuY29uc3QgZGl2TWFpbj0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZDcmFzaD0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBxdWl6SW50cm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1aXpzSW50cm9cIik7XG5jb25zdCBxdWl6TGlzdGluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVpenNMaXN0XCIpO1xuY29uc3QgcXVpelBhZ2luYXRpb25QcmV2aW91cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicHJldmlvdXNcIik7XG5jb25zdCBxdWl6UGFnaW5hdGlvbk5leHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5leHRcIik7XG5jb25zdCBmb3JtU2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hcIik7XG5jb25zdCBpbnB1dEJlZ2luID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiZWdpblwiKTtcbmNvbnN0IGJ0blJhbmRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmFuZG9tXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgbidlc3QgcGFzIGNvbm5lY3TDqSwgcGFzIGxhIHBlaW5lIGQnYWxsZXIgKyBsb2luIDpcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcInVzZXJcIl0sIFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlLCB7IG1lc3NhZ2U6IG5lZWRCZUNvbm5lY3RlZCwgY29sb3I6XCJlcnJvclwiIH0sIHdpbmRvdy5sb2NhdGlvbik7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcImgxXCIsIHdlbGNvbWVNZXNzYWdlLnJlcGxhY2UoXCIjTkFNRVwiLCB1c2VyLm5hbWUpKTtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNhdGlvbiBkdSBmb3JtdWxhaXJlIGRlIHJlY2hlcmNoZSA6XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoeyBcInNlYXJjaFF1ZXN0aW9ubmFpcmVzXCI6IHNlYXJjaFF1ZXN0aW9ubmFpcmVzIH0sIGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgLy8gTGVzIHN0YXRzIDogICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IHhoclN0YXRzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICB4aHJTdGF0cy5vcGVuKFwiR0VUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldFN0YXRzQW5zd2Vycyt1c2VyLmlkKTtcbiAgICAgICAgICAgIHhoclN0YXRzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLm5iQW5zd2VycykgJiYgcmVzcG9uc2UubmJBbnN3ZXJzIT09MCkvLyBwYXMgZGUgc3RhdHMgc2kgYXVjdW5lIHLDqXBvbnNlICFcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dEludHJvPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBUZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CQU5TV0VSUyA6IHJlc3BvbnNlLm5iQW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5CUVVFU1RJT05OQUlSRVMgOiByZXNwb25zZS5uYlF1ZXN0aW9ubmFpcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJUT1RRVUVTVElPTk5BSVJFUyA6IHJlc3BvbnNlLmdyb3Vwcy5uYlB1Ymxpc2hlZCtyZXNwb25zZS5xdWVzdGlvbm5haXJlcy5uYldpdGhvdXRHcm91cFB1Ymxpc2hlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWR0RVUkFUSU9OIDogcmVzcG9uc2UuYXZnRHVyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBBVkdDT1JSRUNUQU5TV0VSUyA6IHJlc3BvbnNlLmF2Z0NvcnJlY3RBbnN3ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGEgc2l0dWF0aW9uIGVzdCBwbHVyaWVsbGUuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPXJlcGxhY2VBbGwoc3RhdHNVc2VyLCBtYXBUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPShyZXNwb25zZS5uYkFuc3dlcnMgPiAxKSA/IHR4dEludHJvLnJlcGxhY2UoXCJTMVwiLCBcInNcIikgOiB0eHRJbnRyby5yZXBsYWNlKFwiUzFcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eHRJbnRybz0ocmVzcG9uc2UubmJRdWVzdGlvbm5haXJlcyA+IDEpID8gdHh0SW50cm8ucmVwbGFjZShcIlMyXCIsIFwic1wiKS5yZXBsYWNlKFwiUzNcIiwgXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIlMyXCIsIFwiXCIpLnJlcGxhY2UoXCJTM1wiLCBcInNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eHRJbnRybz0obWFwVGV4dC5OQlRPVFFVRVNUSU9OTkFJUkVTID4gMSkgPyB0eHRJbnRyby5yZXBsYWNlKFwiUzRcIiwgXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIlM0XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgdHh0SW50cm8sIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhoclN0YXRzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pOyBcbiAgICAgICAgICAgIHhoclN0YXRzLnNlbmQoKTtcblxuICAgICAgICAgICAgLy8gUGFyIGTDqWZhdXQsIG9uIGFmZmljaGUgZGVzIGRlcm5pZXJzIMOpbMOpbWVudHMgc3VwcG9zw6lzIGx1cyBwYXIgbCd1dGlsaXNhdGV1ciA6XG4gICAgICAgICAgICBjb25zdCB4aHJMYXN0UXVpenMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhockxhc3RRdWl6cy5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2dldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZStcIlwiK3VzZXIuaWQrXCIvXCIrMCtcIi9cIitjb25maWdUZW1wbGF0ZS5uYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlK1wiL2h0bWxcIik7XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLm5iVG90ID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpekludHJvLCBcInBcIiwgbm9RdWVzdGlvbm5haXJlQWNjZXNzLCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocmVzcG9uc2UuaHRtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpJbnRybywgXCJwXCIsIGxhc3RRdWVzdGlvbm5haXJlc0ZvclVzZXIsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aXpMaXN0aW5nLmlubmVySFRNTD1yZXNwb25zZS5odG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pOy8vIHJldm9pciBzaSBpbnTDqXLDqnQgZCdhZmZpY2hlciBxdWVscXVlIGNob3NlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChxdWl6cywgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7IC8vIGlkZW1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICB4aHJMYXN0UXVpenMuc2VuZCgpO1xuXG4gICAgICAgICAgICAvLyBUcmFpdGVtZW50IGR1IGxhbmNlbWVudCBkJ3VuZSByZWNoZXJjaGVcbiAgICAgICAgICAgIC8vIExhIHJlY2hlcmNoZSBwZXV0IMOqdHJlIGxhbmPDqWUgdmlhIGxhIGJvdXRvbiBzdWJtaXQgb3UgdW4gbGllbiBkZSBwYWdpbmF0aW9uXG4gICAgICAgICAgICBjb25zdCBzZW5kU2VhcmNoID0gKHR5cGU9XCJzZWFyY2hcIikgPT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBxdWl6TGlzdGluZy5pbm5lckhUTUw9XCJcIitcIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyU2VhcmNoID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgaWYodHlwZT09XCJzZWFyY2hcIilcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK3NlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZT09XCJyYW5kb21cIilcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLm5iVG90KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5uYlRvdD09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpJbnRybywgXCJwXCIsIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiOy8vIHNpbm9uIGxlcyBoYXNoIHMnZW5jaGHDrm5lbnQuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWl6c0ludHJvXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHJlc3BvbnNlLmh0bWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0SW50cm89c2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5uYlRvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEludHJvPShyZXNwb25zZS5uYlRvdCA+IDEpID8gdHh0SW50cm8ucmVwbGFjZShcIiNTXCIsXCJzXCIpIDogdHh0SW50cm8ucmVwbGFjZShcIiNTXCIsXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpekludHJvLCBcInBcIiwgdHh0SW50cm8gLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpekxpc3RpbmcuaW5uZXJIVE1MPXJlc3BvbnNlLmh0bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVpenNJbnRyb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnaW5hdGlvbiBuw6ljZXNzYWlyZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIGNvbW1lbmNlIHBhciB2aWRlci4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWl6UGFnaW5hdGlvblByZXZpb3VzLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWl6UGFnaW5hdGlvbk5leHQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmJlZ2luICE9IDApLy8gcGV1dCByZXRvdXJuZXIgXCIwXCIgZXQgbm9uIDAgIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHF1aXpQYWdpbmF0aW9uUHJldmlvdXMsIFwiYVwiLCBcIjw8IFwiK3ByZXZpb3VzUGFnZSAsIFwicHJldmlvdXNSZXNcIiwgW1wiYnV0dG9uXCJdLCB7IGhyZWY6IFwiI3NlYXJjaFwiIH0pOyAvLyByZXZvaXIsIGxlcyBcIjw8XCIgcG91cnJhaWVudCDDqnRyZSBnw6lyw6llcyBwYXIgbGUgQ1NTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2VFbHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwcmV2aW91c1Jlc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlIHJldG91ciDDoCBsYSBwYWdlIHByw6ljw6lkZW50ZSBwZXV0IHNlIGZhaXJlIGVuIGNsaXF1YW50IHN1ciBsZSBib3V0b24gb3UgdmlhIGwnaGlzdG9yaXF1ZSBkdSBuYXZpZ2F0ZXVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnb0JhY2tSZXMgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdCZWdpbj1yZXNwb25zZS5iZWdpbi1jb25maWdUZW1wbGF0ZS5uYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld0JlZ2luPDApIC8vIG5lIGRldnJhaXQgcGFzIMOqdHJlIHBvc3NpYmxlLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QmVnaW49MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJlZ2luXCIpLnZhbHVlPW5ld0JlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVpenNJbnRyb1wiKTsvLyBwb3VyIHJlbW9udGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VFbHQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvQmFja1JlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW1ibGUgcHJvdm9xdcOpIGJ1ZyA/Pz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29CYWNrUmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZW5kIDwgKHJlc3BvbnNlLm5iVG90LTEpKS8vIC0xLCBjYXIgdGFibGVhdSBjb21tZW5jZSDDoCAwICFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChxdWl6UGFnaW5hdGlvbk5leHQsIFwiYVwiLCBuZXh0UGFnZSsgXCIgPj5cIiwgXCJuZXh0UmVzXCIsIFtcImJ1dHRvblwiXSwgeyBocmVmOiBcIiNzZWFyY2hcIiB9LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGFnZUVsdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5leHRSZXNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0UGFnZUVsdC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiZWdpblwiKS52YWx1ZT1yZXNwb25zZS5lbmQrMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjsvLyBzaW5vbiBsZXMgaGFzaCBzJ2VuY2hhw65uZW50Li4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWl6c0ludHJvXCIpOyAvLyBwb3VyIHJlbW9udGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQocXVpenMsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhcy5vdXRwdXQ9XCJodG1sXCI7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBidG5SYW5kb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYmVnaW5cIikudmFsdWU9MDtcbiAgICAgICAgICAgICAgICBzZW5kU2VhcmNoKFwicmFuZG9tXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGZvcm1TZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJlZ2luXCIpLnZhbHVlPTA7XG4gICAgICAgICAgICAgICAgc2VuZFNlYXJjaCgpO1xuICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/index.app.js b/front/public/JS/index.app.js index 6e4f6ef..9f69066 100644 --- a/front/public/JS/index.app.js +++ b/front/public/JS/index.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -391,99 +400,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1032,4 +1020,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwibG9hZE1hdG9tbyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJKU09OIiwic3RyaW5naWZ5IiwianNvbiIsInBhcnNlIiwiZ2V0SXRlbSIsInJlbW92ZUxvY2FseSIsInJlbW92ZUl0ZW0iLCJsb2ciLCJsaW5rIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImhvbWVQYWdlIiwiX3BhcSIsIndpbmRvdyIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vdyIsIm5vd1RzIiwicm91bmQiLCJnZXRUaW1lIiwidmlzaXRvckluZm8iLCJnZXRWaXNpdG9ySW5mbyIsImNyZWF0ZVRzIiwicGFyc2VJbnQiLCJjb29raWVUaW1lb3V0Iiwib3JpZ2luYWxUaW1lb3V0Iiwic2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLCJ1IiwiZCIsImciLCJjcmVhdGVFbGVtZW50IiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwidHlwZSIsImFzeW5jIiwic3JjIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJkYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJtZXNzYWdlIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbmxvYWQiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwibG9jYXRpb24iLCJpbmRleE9mIiwiYXNzaWduIiwib25lcnJvciIsInN0YXR1c1RleHQiLCJzZW5kIl0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxJQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURBQUQsQ0FBOUI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FB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LENBQTFCOztBQUNBZixXQUFHLENBQUNnQixJQUFKO0FBQ0g7QUFDSjtBQUNKLEdBdEVNLENBQVA7QUF1RUgsQ0F6RU0sQyxDQTBFUDs7QUFDQSxNQUFNakIsWUFBWSxHQUFHLENBQUNQLGNBQUQsRUFBaUJDLE9BQWpCLEVBQTBCQyxTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQ2pLLDJEQUFPLENBQUNnSyxPQUFELENBQVgsRUFDSTdELG9FQUFVLENBQUMsU0FBRCxFQUFZNkQsT0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDaEssMkRBQU8sQ0FBQ2lLLFNBQUQsQ0FBWCxFQUNJOUQsb0VBQVUsQ0FBQyxLQUFELEVBQVE4RCxTQUFSLENBQVY7QUFDSixNQUFHLENBQUNqSywyREFBTyxDQUFDK0osY0FBRCxDQUFYLEVBQ0kzQyxNQUFNLENBQUM4RCxRQUFQLENBQWdCRSxNQUFoQixDQUF1QnJCLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvaW5kZXguYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaW5kZXguanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwiLy8gU2kgbm9uIHV0aWxpc8OpLCBzdXBwcmltZXIgbCdhcHBlbCBkZXMgSlMgZnJvbnQtZW5kIHB1aXMgcmVjb21waWxlci5cbi8vIFJldm9pciBjb21tZW50IHLDqW9yZ2FuaXNlciBjZWxhIHNvdXMtZm9ybWUgZGUgbW9kdWxlIGluZMOpcGVuZGFudC5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBTdGF0cyBNYXRvbW8gOlxuICAgIG1hdG9tbzogeyB1cmw6IFwiaHR0cHM6Ly9zdGF0cy5sZS1mYWItbGFiLmNvbS9cIiwgc2l0ZUlkOiBcIjVcIiB9LFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBTQ1JJUFQgREUgQkFTRSBBUFBFTMOJIERBTlMgTEVTIFBBR0VTIFRZUEUgQUNDVUVJTCBEVSBTSVRFXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB0aXLDqXMgZHUgYmFja2VuZCA6XG5pbXBvcnQgeyBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuaGVsbG9EZXYoKTtcblxuLy8gVGVzdCBkZSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBwb3VyIGFkYXB0ZXIgbGUgbGllbiBkdSBtZW51Li4uXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gb24gY2hhbmdlIGxlIGxpZW4gZCdhY2PDqHMgYXUgY29tcHRlXG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBtYXRvbW8gfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL21hdG9tby5qc1wiO1xuXG4vLyBGb25jdGlvbiBjaGFyZ2VhbnQgbGUgY29kZSBtYXRvbW9cbmV4cG9ydCBjb25zdCBsb2FkTWF0b21vID0gKCkgPT5cbntcbiAgICAvLyBjaGFyZ2VtZW50IGRlIG1hdG9tb1xuICAgIHZhciBfcGFxID0gd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICAvL2Fqb3V0IGNuaWwgIDpcbiAgICBfcGFxLnB1c2goW2Z1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbm93VHMgPSBNYXRoLnJvdW5kKG5vdy5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgICAgICAgIHZpc2l0b3JJbmZvID0gc2VsZi5nZXRWaXNpdG9ySW5mbygpO1xuICAgICAgICAgICAgdmFyIGNyZWF0ZVRzID0gcGFyc2VJbnQodmlzaXRvckluZm9bMl0pO1xuICAgICAgICAgICAgdmFyIGNvb2tpZVRpbWVvdXQgPSAzMzY5NjAwMDsgLy8gMTMgbW9pcyBlbiBzZWNvbmRlc1xuICAgICAgICAgICAgdmFyIG9yaWdpbmFsVGltZW91dCA9IGNyZWF0ZVRzICsgY29va2llVGltZW91dCAtIG5vd1RzO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZpc2l0b3JDb29raWVUaW1lb3V0KCBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KCkgKTtcbiAgICB9XSk7XG4gICAgLy8tLWZpbiBham91dCBjbmlsXG4gICAgX3BhcS5wdXNoKFsndHJhY2tQYWdlVmlldyddKTtcbiAgICBfcGFxLnB1c2goWydlbmFibGVMaW5rVHJhY2tpbmcnXSk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdT1tYXRvbW8udXJsO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRUcmFja2VyVXJsJywgdSsnbWF0b21vLnBocCddKTtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0U2l0ZUlkJywgbWF0b21vLnNpdGVJZF0pO1xuICAgICAgICB2YXIgZD1kb2N1bWVudCwgZz1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLCBzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgICBnLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7IGcuYXN5bmM9dHJ1ZTsgZy5zcmM9dSsnbWF0b21vLmpzJzsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuICAgIH0pKCk7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1RlbXBsYXRlIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJsb2FkTWF0b21vIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJqc29uIiwicGFyc2UiLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImxvZyIsImxpbmsiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaG9tZVBhZ2UiLCJfcGFxIiwid2luZG93IiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJwYXJzZUludCIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsImNyZWF0ZUVsZW1lbnQiLCJzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJ0eXBlIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJ0b2tlbiIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsIm1lc3NhZ2UiLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ubG9hZCIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0IiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCIsInNlbmQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xG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SXZELG9GQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0EwRCwwQkFBWSxDQUFDUCxjQUFELEVBQWlCQyxPQUFqQixFQUEwQkMsU0FBMUIsQ0FBWjtBQUNBRSxxQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osV0FsQ0QsTUFvQ0E7QUFDSXZELGtGQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0EwRCx3QkFBWSxDQUFDUCxjQUFELEVBQWlCQyxPQUFqQixFQUEwQkMsU0FBMUIsQ0FBWjtBQUNBRSxtQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osU0E1Q0Q7O0FBNkNBSSxXQUFHLENBQUNjLE9BQUosR0FBYyxNQUFNakIsTUFBTSxDQUFDRyxHQUFHLENBQUNlLFVBQUwsQ0FBMUI7O0FBQ0FmLFdBQUcsQ0FBQ2dCLElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU1qQixZQUFZLEdBQUcsQ0FBQ1AsY0FBRCxFQUFpQkMsT0FBakIsRUFBMEJDLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDM0ssMkRBQU8sQ0FBQzBLLE9BQUQsQ0FBWCxFQUNJN0Qsb0VBQVUsQ0FBQyxTQUFELEVBQVk2RCxPQUFaLENBQVY7QUFDSixNQUFHLENBQUMxSywyREFBTyxDQUFDMkssU0FBRCxDQUFYLEVBQ0k5RCxvRUFBVSxDQUFDLEtBQUQsRUFBUThELFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQzNLLDJEQUFPLENBQUN5SyxjQUFELENBQVgsRUFDSTNDLE1BQU0sQ0FBQzhELFFBQVAsQ0FBZ0JFLE1BQWhCLENBQXVCckIsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9pbmRleC5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFNDUklQVCBERSBCQVNFIEFQUEVMw4kgREFOUyBMRVMgUEFHRVMgVFlQRSBBQ0NVRUlMIERVIFNJVEVcblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGF2YWlsYWJsZUxhbmdzLCB0aGVtZSB9IGZyb20gXCIuLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBsb2FkTWF0b21vIH0gZnJvbSBcIi4vdG9vbHMvbWF0b21vLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG5oZWxsb0RldigpO1xuXG4vLyBUZXN0IGRlIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIHBvdXIgYWRhcHRlciBsZSBsaWVuIGR1IG1lbnUuLi5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICAvLyBvbiBjaGFuZ2UgbGUgbGllbiBkJ2FjY8OocyBhdSBjb21wdGVcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IG1hdG9tbyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvbWF0b21vLmpzXCI7XG5cbi8vIEZvbmN0aW9uIGNoYXJnZWFudCBsZSBjb2RlIG1hdG9tb1xuZXhwb3J0IGNvbnN0IGxvYWRNYXRvbW8gPSAoKSA9Plxue1xuICAgIC8vIGNoYXJnZW1lbnQgZGUgbWF0b21vXG4gICAgdmFyIF9wYXEgPSB3aW5kb3cuX3BhcSA9IHdpbmRvdy5fcGFxIHx8IFtdO1xuICAgIC8vYWpvdXQgY25pbCAgOlxuICAgIF9wYXEucHVzaChbZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICBmdW5jdGlvbiBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KClcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBub3dUcyA9IE1hdGgucm91bmQobm93LmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgICAgICAgdmlzaXRvckluZm8gPSBzZWxmLmdldFZpc2l0b3JJbmZvKCk7XG4gICAgICAgICAgICB2YXIgY3JlYXRlVHMgPSBwYXJzZUludCh2aXNpdG9ySW5mb1syXSk7XG4gICAgICAgICAgICB2YXIgY29va2llVGltZW91dCA9IDMzNjk2MDAwOyAvLyAxMyBtb2lzIGVuIHNlY29uZGVzXG4gICAgICAgICAgICB2YXIgb3JpZ2luYWxUaW1lb3V0ID0gY3JlYXRlVHMgKyBjb29raWVUaW1lb3V0IC0gbm93VHM7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxUaW1lb3V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmlzaXRvckNvb2tpZVRpbWVvdXQoIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKSApO1xuICAgIH1dKTtcbiAgICAvLy0tZmluIGFqb3V0IGNuaWxcbiAgICBfcGFxLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pO1xuICAgIF9wYXEucHVzaChbJ2VuYWJsZUxpbmtUcmFja2luZyddKTtcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB1PW1hdG9tby51cmw7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFRyYWNrZXJVcmwnLCB1KydtYXRvbW8ucGhwJ10pO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRTaXRlSWQnLCBtYXRvbW8uc2l0ZUlkXSk7XG4gICAgICAgIHZhciBkPWRvY3VtZW50LCBnPWQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgICAgIGcudHlwZT0ndGV4dC9qYXZhc2NyaXB0JzsgZy5hc3luYz10cnVlOyBnLnNyYz11KydtYXRvbW8uanMnOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcscyk7XG4gICAgfSkoKTtcbn0iLCJpbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCBzaXRlVXJsLCB0aGVtZSB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyAgY2hlY2tMb2dpblJvdXRlLCB0aW1lRGlmZmVyZW5jZU1heCwgdGltZURpZmZlcmVuY2VNaW4sIHVzZXJSb3V0ZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL3VzZXJzLmpzXCI7XG5cbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRUaW1lRGlmZmVyZW5jZSA9ICgpID0+XG57XG4gICAgLy8gbXVsdGlwbGllciBwYXIgLTEsIGNhciBjJ2VzdCBjZSBxdSdpbCBmYXV0IFwiYWpvdXRlclwiIMOgIGwnaGV1cmUgVVRDIHBvdXIgcmV2ZW5pciBlbiBoZXVyZSBsb2NhbGUgcXVpIG0naW50w6lyZXNzZSBldCBub24gbCdpbnZlcnNlXG4gICAgY29uc3QgdGltZUxvY2FsPW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSotMTtcbiAgICBpZih0aW1lTG9jYWwgPiB0aW1lRGlmZmVyZW5jZU1heCB8fCB0aW1lTG9jYWwgPCB0aW1lRGlmZmVyZW5jZU1pbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gdGltZUxvY2FsO1xufVxuXG4vLyBKJ3V0aWxpc2UgbGUgc3RvY2thZ2UgbG9jYWwgZHUgbmF2aWdhdGV1ciBwb3VyIGVucmVnaXN0cmVyIGxlcyBkb25uw6llcyBwZXJtZXR0YW50IGRlIHJlY29ubmHDrnRyZSBsJ3V0aWxpc2F0ZXVyIHBhciBsYSBzdWl0ZVxuLy8gU2V1bCBsZSBzZXJ2ZXVyIHBvdXJyYSB2w6lyaWZpZXIgcXVlIGxlcyBpZGVudGlmaWFudHMgc29udCAodG91am91cnMpIHZhbGlkZXMuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9ICh1c2VySWQsIHRva2VuLCBkdXJhdGlvblRTKSA9Plxue1xuICAgIGNvbnN0IHN0b3JhZ2VVc2VyPVxuICAgIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25UU1xuICAgIH1cbiAgICBzYXZlTG9jYWx5KFwidXNlclwiLCBzdG9yYWdlVXNlcik7XG59XG5cbi8vIFbDqXJpZmllIHF1J2lsIHkgYSBkZXMgZG9ubsOpZXMgbG9jYWxlcyBjb25jZXJuYW50IGxlIHLDqXN1bHRhdCBkJ3VuIHF1aXogb3UgZCd1biBncm91cGUgZGUgcXVpenNcbi8vIEV0IGxlcyBham91dGUgYXV4IGRvbm7DqWVzIGVudm95w6llcyBwYXIgbGVzIGZvcm11bGFpcmVzIGQnaW5zY3JpcHRpb24vY29ubmV4aW9uIHNpIGMnZXN0IGxlIGNhc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyRGF0YXMgPSAoZGF0YXMpID0+XG57XG4gICAgY29uc3QgbGFzdEFuc3dlcj1nZXRMb2NhbHkoXCJsYXN0QW5zd2VyXCIpO1xuICAgIGlmKCFpc0VtcHR5KGxhc3RBbnN3ZXIpKVxuICAgIHtcbiAgICAgICAgY29uc3QgYW5zd2VyPUpTT04ucGFyc2UobGFzdEFuc3dlcik7XG4gICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLmR1cmF0aW9uPWFuc3dlci5kdXJhdGlvbjtcbiAgICAgICAgICAgIGRhdGFzLm5iQ29ycmVjdEFuc3dlcnM9YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICBkYXRhcy5uYlF1ZXN0aW9ucz1hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSlcbiAgICAgICAgICAgICAgICBkYXRhcy5RdWVzdGlvbm5haXJlSWQ9YW5zd2VyLlF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhcy5Hcm91cElkPWFuc3dlci5Hcm91cElkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gQ2V0dGUgZm9uY3Rpb24gdGVzdGUgbGEgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgZCd1bmUgcGFnZVxuLy8gT24gcGV1dCBmb3VybmlzIHVuZSBsaXN0ZSBkZSBzdGF0dXRzIGFjY2VwdMOpcyAoc2kgdmlkZSA9IHRvdXMpLCBhaW5zaSBxdSd1bmUgdXJsIGRlIHJlZGlyZWN0aW9uIHNpIG5vbiBjb25uZWN0w6ksIHVuIG1lc3NhZ2UgZCdlcnJldXIgw6AgYWZmaWNoZXIgc3VyIGxhIHBhZ2UgZGUgZGVzdGluYXRpb24gZXQgbCd1cmwgc3VyIGxhcXVlbGxlIHJldmVuaXIgdW5lIGZvaXMgY29ubmVjdMOpXG5leHBvcnQgY29uc3QgY2hlY2tTZXNzaW9uID0gYXN5bmMgKHN0YXR1cz1bXSwgdXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhcz1nZXRMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICBpZihpc0VtcHR5KHVzZXJEYXRhcykpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1KU09OLnBhcnNlKHVzZXJEYXRhcyk7XG4gICAgICAgICAgICBpZihpc0VtcHR5KHVzZXIuaWQpIHx8wqBpc0VtcHR5KHVzZXIudG9rZW4pIHx8IGlzRW1wdHkodXNlci5kdXJhdGlvbikgfHwgdXNlci5kdXJhdGlvbiA8IERhdGUubm93KCkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tMb2dpblJvdXRlK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuaXNWYWxpZCAmJiByZXNwb25zZS5pZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmlkPT09dXNlci5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm5hbWU9cmVzcG9uc2UubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLmxhbmd1YWdlPXJlc3BvbnNlLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIudGltZURpZmZlcmVuY2U9cmVzcG9uc2UudGltZURpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5zdGF0dXM9cmVzcG9uc2Uuc3RhdHVzOy8vIGMnZXN0IGxlIHRva2VuIHF1aSBzZXJ0IMOgIHbDqXJpZmllciBsZSBzdGF0dXQgw6AgY2hhcXVlIHJlcXXDqnRlIMOgIGwnQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUxvY2FseShcInVzZXJcIiwgdXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2kgaWwgcydhZ2l0IGQndW4gXCJ1c2VyXCIgZXQgcXVlIHNvbiBhYm9ubmVtZW50IGEgZXhwaXLDqSwgamUgbGUgcmVkaXJpZ2UgdmVycyBsYSBjYWlzc2UgOi0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzPT09XCJ1c2VyXCIgJiYgcmVzcG9uc2UubmJEYXlzT2sgPD0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybEFjY291bnQ9c2l0ZVVybCtcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZih1cmxBY2NvdW50KT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZStcIiNzdWJzY3JpYmVcIik7Ly8gcGFzc8OpZSBkaXJlY3RlbWVudCBpY2ksIGwnYW5jcmUgI3N1YnNjcmliZSBuZSBmb25jdGlvbm5lIHBhcyAhP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0dXMubGVuZ3RoIT09MCAmJiBzdGF0dXMuaW5kZXhPZihyZXNwb25zZS5zdGF0dXMpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHhoci5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyBDZXR0ZSBmb25jdGlvbiBzZXJ0IMOgIGxhIHByw6ljw6lkZW50ZSBlbiBjYXMgZGUgY29ubmV4aW9uIG5vbiB2YWxpZGVcbmNvbnN0IHJlZGlyZWN0VXNlciA9ICh1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKVxuICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCBtZXNzYWdlKTtcbiAgICBpZighaXNFbXB0eSh1cmxXYW50ZWQpKVxuICAgICAgICBzYXZlTG9jYWx5KFwidXJsXCIsIHVybFdhbnRlZCk7XG4gICAgaWYoIWlzRW1wdHkodXJsUmVkaXJlY3Rpb24pKVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHVybFJlZGlyZWN0aW9uKTtcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/front/public/JS/loginLink.app.js b/front/public/JS/loginLink.app.js index 57b2396..313ed13 100644 --- a/front/public/JS/loginLink.app.js +++ b/front/public/JS/loginLink.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -586,99 +595,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1305,4 +1293,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9sb2dpbkxpbmsuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJkaXZSZXNwb25zZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJoZWxsb0RldiIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsInNhdmVMb2NhbHkiLCJtZXNzYWdlIiwiY29sb3IiLCJ1c2VyIiwiZ2V0TG9jYWx5Iiwid2luZG93IiwibG9jYXRpb24iLCJhc3NpZ24iLCJkYXRhcyIsImdldFVybFBhcmFtcyIsInQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzIiwidXNlcklkIiwiY29ubmV4aW9uVGltZSIsInRva2VuIiwiY29ubmV4aW9uTWF4VGltZSIsIm5vdyIsImVuZHNXaXRoIiwicGFyc2VJbnQiLCJzZXRTZXNzaW9uIiwicmVtb3ZlTG9jYWx5IiwiYWRkRWxlbWVudCIsImVycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsInRpbWVEaWZmZXJlbmNlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJjaGVja0Fuc3dlckRhdGFzIiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJzdHJpbmdpZnkiLCJlIiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsImNvbnNvbGUiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsImNvbmZpZ1RlbXBsYXRlIiwibGluayIsImhvbWVQYWdlIiwicGFyYW1ldGVycyIsInNwbGl0IiwicGFyYW0iLCJkZWNvZGVVUkkiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxJQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURB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QUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU1rRCxZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQmxGLE9BQWpCLEVBQTBCbUYsU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUNqTCwyREFBTyxDQUFDOEYsT0FBRCxDQUFYLEVBQ0lELG9FQUFVLENBQUMsU0FBRCxFQUFZQyxPQUFaLENBQVY7QUFDSixNQUFHLENBQUM5RiwyREFBTyxDQUFDaUwsU0FBRCxDQUFYLEVBQ0lwRixvRUFBVSxDQUFDLEtBQUQsRUFBUW9GLFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQ2pMLDJEQUFPLENBQUNnTCxjQUFELENBQVgsRUFDSTlFLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkMsTUFBaEIsQ0FBdUI0RSxjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL2xvZ2luTGluay5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9sb2dpbkxpbmsuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgUEVSTUVUVEFOVCBERSBURVNURVIgVU4gTElFTiBERSBDT05ORVhJT04gUkXDh1UgUEFSIEUtTUFJTFxuXG4vLy8gVW4gdG9rZW4gZXN0IHRyYW5zbWlzIGVuIHBhcmFtw6h0cmUgZGUgbCdVcmwuIElsIGEgdW5lIHZhbGlkaXTDqSBsaW1pdMOpIGRhbnMgbGUgdGVtcHMuXG4vLy8gRGFucyBjZSBjYXMsIG9uIHBldXQgcmVkaXJpZ2VyIGwndXRpbGlzYXRldXIgdmVycyBsYSBwYWdlIGRlIGNvbm5leGlvbiBwb3VyIG9idGVuaXIgdW4gbm91dmVhdSBsaWVuIGRlIHZhbGlkYXRpb25cbi8vLyBTaSBsZSB0b2tlbiBlc3Qgb2ssIG9uIGNyw6llIHVuZSBzZXNzaW9uIHN1aXZhbnQgbGEgZHVyw6llIHJldG91cm7DqWUgcGFyIGwnQVBJIGV0IHJlZGlyaWdlIGwndXRpbGlzYXRldXIgdmVycyBzYSBwYWdlIGQnYWNjdWVpbFxuLy8vIFVuIHLDqXN1bHRhdCBkZSBxdWl6IHBldXQgYXVzc2kgYXZvaXIgw6l0w6kgZW5yZWdpc3Ryw6kgY8O0dMOpIGNsaWVudCBldCBlc3QgYWxvcnMgw6AgdHJhbnNtZXR0cmUgw6AgbCdBUEkuXG4vLy8gU2kgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCB1bmUgc2Vzc2lvbiBhY3RpdmUgdmFsaWRlLCBjJ2VzdCBxdSdpbCBhIGTDqWrDoCBjbGlxdcOpIHN1ciBsZSBsaWVuLiBPbiBsZSByZWRpcmlnZSDDqWdhbGVtZW50IHZlcnMgc2EgcGFnZSBkJ2FjY3VlaWwuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IHsgY29ubmVjdGlvblBhZ2UsIHVzZXJIb21lUGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgZ2V0VXJsUGFyYW1zIH0gZnJvbSBcIi4vdG9vbHMvdXJsLmpzXCI7XG5pbXBvcnQgeyBjaGVja0Fuc3dlckRhdGFzLCBjaGVja1Nlc3Npb24sIGdldFRpbWVEaWZmZXJlbmNlLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGFscmVhZHlDb25uZWN0ZWQsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIHNpIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBjb25uZWN0w6ksIHBhcyBsYSBwZWluZSBkJ2FsbGVyICsgbG9pbiA6XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgeyBtZXNzYWdlOiBhbHJlYWR5Q29ubmVjdGVkLCBjb2xvcjpcImluZm9cIiB9KTsvLyBwb3VyIGwnYWZmaWNoZXIgc3VyIGxhIHBhZ2Ugc3VpdmFudGVcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrdXNlckhvbWVQYWdlKTsvLyB0eXBlIGRlIGNvbm5leGlvbiBwb3NzaWJsZSBxdWUgcG91ciBsZXMgc2ltcGxlcyB1c2Vyc1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYoZGF0YXMgJiYgZGF0YXMudCE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY29ubmVjdGlvbldpdGhMaW5rUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLnVzZXJJZCkgJiYgIWlzRW1wdHkocmVzcG9uc2UuY29ubmV4aW9uVGltZSkgJiYgIWlzRW1wdHkocmVzcG9uc2UudG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25uZXhpb25NYXhUaW1lPURhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuY29ubmV4aW9uVGltZS5lbmRzV2l0aChcImRheXNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjI0KjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uKHJlc3BvbnNlLnVzZXJJZCwgcmVzcG9uc2UudG9rZW4sIGNvbm5leGlvbk1heFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISBpbXBvcnRhbnQgcG91ciBuZSBwYXMgZW5yZWdpc3RlciBwbHVzaWV1cnMgZm9pcyBsZSByw6lzdWx0YXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHZhbGlkYXRpb25NZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTsvLyBhdSBjYXMgb8O5IGJsb2NhZ2UgcmVkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK3VzZXJIb21lUGFnZSk7Ly8gY29ubmV4aW9uIHBhciBsaWVuIG5lIGNvbmNlcm5lIHF1ZSBsZXMgc2ltcGxlcyBcInVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHRoaXMuc3RhdHVzID09PSA0MDEgfHwgdGhpcy5zdGF0dXMgPT09IDQwMykgJiYgcmVzcG9uc2UuZXJyb3JzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBjb25uZWN0aW9uUGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhcy50aW1lRGlmZmVyZW5jZT1nZXRUaW1lRGlmZmVyZW5jZSgpO1xuICAgICAgICAgICAgICAgIC8vIHNpIGwndXRpbGlzYXRldXIgYSBwcsOpY8OpZGVtZW50IHLDqXBvbmR1IMOgIHVuIHF1aXosIGonYWpvdXRlIGxlcyBpbmZvcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgICAgICBkYXRhcz1jaGVja0Fuc3dlckRhdGFzKGRhdGFzKTtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9sb2dpbkxpbmsuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZE1pbkxlbmd0aCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImRpdlJlc3BvbnNlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwic2F2ZUxvY2FseSIsIm1lc3NhZ2UiLCJjb2xvciIsInVzZXIiLCJnZXRMb2NhbHkiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImFzc2lnbiIsImRhdGFzIiwiZ2V0VXJsUGFyYW1zIiwidCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzdGF0dXMiLCJ1c2VySWQiLCJjb25uZXhpb25UaW1lIiwidG9rZW4iLCJjb25uZXhpb25NYXhUaW1lIiwibm93IiwiZW5kc1dpdGgiLCJwYXJzZUludCIsInNldFNlc3Npb24iLCJyZW1vdmVMb2NhbHkiLCJhZGRFbGVtZW50IiwiZXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5IiwidGltZURpZmZlcmVuY2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsImNoZWNrQW5zd2VyRGF0YXMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInN0cmluZ2lmeSIsImUiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwiY29uc29sZSIsImxvZyIsInVwZGF0ZUFjY291bnRMaW5rIiwiY29uZmlnVGVtcGxhdGUiLCJsaW5rIiwiaG9tZVBhZ2UiLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRlY29kZVVSSSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0IiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FB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QVksQ0FBQ04sY0FBRCxFQUFpQmxGLE9BQWpCLEVBQTBCbUYsU0FBMUIsQ0FBWjtBQUNBRSxxQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osV0FsQ0QsTUFvQ0E7QUFDSXhELGtGQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0EyRCx3QkFBWSxDQUFDTixjQUFELEVBQWlCbEYsT0FBakIsRUFBMEJtRixTQUExQixDQUFaO0FBQ0FFLG1CQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixTQTVDRDs7QUE2Q0EzRSxXQUFHLENBQUNxRixPQUFKLEdBQWMsTUFBTVQsTUFBTSxDQUFDNUUsR0FBRyxDQUFDc0YsVUFBTCxDQUExQjs7QUFDQXRGLFdBQUcsQ0FBQzRCLElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU1rRCxZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQmxGLE9BQWpCLEVBQTBCbUYsU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUMzTCwyREFBTyxDQUFDd0csT0FBRCxDQUFYLEVBQ0lELG9FQUFVLENBQUMsU0FBRCxFQUFZQyxPQUFaLENBQVY7QUFDSixNQUFHLENBQUN4RywyREFBTyxDQUFDMkwsU0FBRCxDQUFYLEVBQ0lwRixvRUFBVSxDQUFDLEtBQUQsRUFBUW9GLFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQzNMLDJEQUFPLENBQUMwTCxjQUFELENBQVgsRUFDSTlFLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkMsTUFBaEIsQ0FBdUI0RSxjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL2xvZ2luTGluay5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9sb2dpbkxpbmsuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgUEVSTUVUVEFOVCBERSBURVNURVIgVU4gTElFTiBERSBDT05ORVhJT04gUkXDh1UgUEFSIEUtTUFJTFxuXG4vLy8gVW4gdG9rZW4gZXN0IHRyYW5zbWlzIGVuIHBhcmFtw6h0cmUgZGUgbCdVcmwuIElsIGEgdW5lIHZhbGlkaXTDqSBsaW1pdMOpIGRhbnMgbGUgdGVtcHMuXG4vLy8gRGFucyBjZSBjYXMsIG9uIHBldXQgcmVkaXJpZ2VyIGwndXRpbGlzYXRldXIgdmVycyBsYSBwYWdlIGRlIGNvbm5leGlvbiBwb3VyIG9idGVuaXIgdW4gbm91dmVhdSBsaWVuIGRlIHZhbGlkYXRpb25cbi8vLyBTaSBsZSB0b2tlbiBlc3Qgb2ssIG9uIGNyw6llIHVuZSBzZXNzaW9uIHN1aXZhbnQgbGEgZHVyw6llIHJldG91cm7DqWUgcGFyIGwnQVBJIGV0IHJlZGlyaWdlIGwndXRpbGlzYXRldXIgdmVycyBzYSBwYWdlIGQnYWNjdWVpbFxuLy8vIFVuIHLDqXN1bHRhdCBkZSBxdWl6IHBldXQgYXVzc2kgYXZvaXIgw6l0w6kgZW5yZWdpc3Ryw6kgY8O0dMOpIGNsaWVudCBldCBlc3QgYWxvcnMgw6AgdHJhbnNtZXR0cmUgw6AgbCdBUEkuXG4vLy8gU2kgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCB1bmUgc2Vzc2lvbiBhY3RpdmUgdmFsaWRlLCBjJ2VzdCBxdSdpbCBhIGTDqWrDoCBjbGlxdcOpIHN1ciBsZSBsaWVuLiBPbiBsZSByZWRpcmlnZSDDqWdhbGVtZW50IHZlcnMgc2EgcGFnZSBkJ2FjY3VlaWwuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IHsgY29ubmVjdGlvblBhZ2UsIHVzZXJIb21lUGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSwgdXNlclJvdXRlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgZ2V0VXJsUGFyYW1zIH0gZnJvbSBcIi4vdG9vbHMvdXJsLmpzXCI7XG5pbXBvcnQgeyBjaGVja0Fuc3dlckRhdGFzLCBjaGVja1Nlc3Npb24sIGdldFRpbWVEaWZmZXJlbmNlLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGFscmVhZHlDb25uZWN0ZWQsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIHNpIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBjb25uZWN0w6ksIHBhcyBsYSBwZWluZSBkJ2FsbGVyICsgbG9pbiA6XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgeyBtZXNzYWdlOiBhbHJlYWR5Q29ubmVjdGVkLCBjb2xvcjpcImluZm9cIiB9KTsvLyBwb3VyIGwnYWZmaWNoZXIgc3VyIGxhIHBhZ2Ugc3VpdmFudGVcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrdXNlckhvbWVQYWdlKTsvLyB0eXBlIGRlIGNvbm5leGlvbiBwb3NzaWJsZSBxdWUgcG91ciBsZXMgc2ltcGxlcyB1c2Vyc1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYoZGF0YXMgJiYgZGF0YXMudCE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY29ubmVjdGlvbldpdGhMaW5rUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmICFpc0VtcHR5KHJlc3BvbnNlLnVzZXJJZCkgJiYgIWlzRW1wdHkocmVzcG9uc2UuY29ubmV4aW9uVGltZSkgJiYgIWlzRW1wdHkocmVzcG9uc2UudG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25uZXhpb25NYXhUaW1lPURhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuY29ubmV4aW9uVGltZS5lbmRzV2l0aChcImRheXNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjI0KjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5leGlvbk1heFRpbWUrPXBhcnNlSW50KHJlc3BvbnNlLmNvbm5leGlvblRpbWUsMTApKjM2MDAqMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZXNzaW9uKHJlc3BvbnNlLnVzZXJJZCwgcmVzcG9uc2UudG9rZW4sIGNvbm5leGlvbk1heFRpbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcImxhc3RBbnN3ZXJcIik7Ly8gISBpbXBvcnRhbnQgcG91ciBuZSBwYXMgZW5yZWdpc3RlciBwbHVzaWV1cnMgZm9pcyBsZSByw6lzdWx0YXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHZhbGlkYXRpb25NZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTsvLyBhdSBjYXMgb8O5IGJsb2NhZ2UgcmVkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK3VzZXJIb21lUGFnZSk7Ly8gY29ubmV4aW9uIHBhciBsaWVuIG5lIGNvbmNlcm5lIHF1ZSBsZXMgc2ltcGxlcyBcInVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHRoaXMuc3RhdHVzID09PSA0MDEgfHwgdGhpcy5zdGF0dXMgPT09IDQwMykgJiYgcmVzcG9uc2UuZXJyb3JzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBjb25uZWN0aW9uUGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhcy50aW1lRGlmZmVyZW5jZT1nZXRUaW1lRGlmZmVyZW5jZSgpO1xuICAgICAgICAgICAgICAgIC8vIHNpIGwndXRpbGlzYXRldXIgYSBwcsOpY8OpZGVtZW50IHLDqXBvbmR1IMOgIHVuIHF1aXosIGonYWpvdXRlIGxlcyBpbmZvcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgICAgICBkYXRhcz1jaGVja0Fuc3dlckRhdGFzKGRhdGFzKTtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/manageGroups.app.js b/front/public/JS/manageGroups.app.js index 465ebd6..dd37ebd 100644 --- a/front/public/JS/manageGroups.app.js +++ b/front/public/JS/manageGroups.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -655,99 +664,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1562,4 +1550,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL2dyb3VwJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ3JvdXAuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9tYW5hZ2VHcm91cHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImJ0blNlbmRSZXNwb25zZSIsImJ0blNoYXJlUXVpelR4dCIsImNvbW1vbkludHJvVHh0IiwiY29ycmVjdEFuc3dlclR4dCIsImdyb3Vwc05hbWUiLCJncm91cFF1ZXN0aW9ubmFpcmVzTGlzdCIsImdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0V2l0aG91dCIsImhhdmVCZWVuUHVibGlzaGVkIiwiaW5mb3NHcm91cEZvckFkbWluIiwibGlua0ZpcnN0RWxlbWVudEdyb3VwIiwibGFzdFVwZGF0ZWQiLCJuZWVkQ29ycmVjdFB1Ymxpc2hpbmdEYXRlIiwibmVlZExhbmd1YWdlIiwibmVlZE5vdFRvb0xvbmdUaXRsZSIsIm5lZWRUaXRsZSIsIm5lZWRVbmlxdWVVcmwiLCJuZWVkVXJsIiwibm90Rm91bmQiLCJwdWJsaXNoZWRBdCIsInB1Ymxpc2hlZEJ5Iiwic2VhcmNoSXNOb3RMb25nRW5vdWdoIiwic2VhcmNoV2l0aG91dFJlc3VsdCIsIndyb25nQW5zd2VyVHh0IiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdRdWVzdGlvbm5haXJlcyIsImNvbmZpZ1RlbXBsYXRlIiwiYnRuTmV3R3JvdXAiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYnRuUHJldmlld0dyb3VwIiwiZGVsZXRlQ2hlY2tCb3giLCJkaXZDcmFzaCIsImRpdkdyb3VwSW50cm8iLCJkaXZNYWluIiwiZGl2TWVzc2FnZSIsImRpdlF1ZXN0aW9ubmFpcmVzIiwiZGl2UmVzcG9uc2UiLCJkaXZTZWFyY2hSZXN1bHQiLCJmb3JtR3JvdXAiLCJmb3JtU2VhcmNoIiwiZW1wdHlHcm91cEZvcm0iLCJlbXB5Rm9ybSIsInN0eWxlIiwiZGlzcGxheSIsImlubmVySFRNTCIsInNob3dGb3JtR3JvdXBJbmZvcyIsInRva2VuIiwieGhyR2V0SW5mb3MiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzIiwibWFwVGV4dCIsIkdST1VQX0lEIiwiREFURV9DUkVBIiwiZGF0ZUZvcm1hdCIsImNyZWF0ZWRBdCIsIkRBVEVfVVBEQVRFIiwidXBkYXRlZEF0IiwiTkJfRUxFTUVOVFMiLCJRdWVzdGlvbm5haXJlcyIsImdyb3VwSW50cm8iLCJyZXBsYWNlQWxsIiwiYWRkRWxlbWVudCIsImRhdGEiLCJlbGVtZW50cyIsInNldEF0dHJpYnV0ZSIsImxpc3RIVE1MIiwib3B0aW9uc0RheVN0ciIsIndlZWtkYXkiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsIm1lc3NhZ2UiLCJjb2xvciIsIndpbmRvdyIsImxvY2F0aW9uIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwicmVtb3ZlTG9jYWx5Iiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwidXJsRGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJHcm91cERhdGFzIiwiZGVsZXRlT2siLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvcnMiLCJzdHJpbmdpZnkiLCJ4aHJTZWFyY2giLCJzZWxlY3RIVE1MIiwic2VhcmNoU2VsZWN0IiwiY29uc29sZSIsImVycm9yIiwiaGVsbG9EZXYiLCJzYXZlTG9jYWx5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwicGFyYW1ldGVycyIsInNwbGl0IiwicGFyYW0iLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm5vdyIsInhociIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxJQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURBQUQsQ0FBOUI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUDtBQUVJQyxRQUFNLEVBQUUsMkJBRlo7QUFHSUMsU0FBTyxFQUFFLHVCQUhiO0FBSUlDLFdBQVMsRUFBRSxTQUpmO0FBS0lDLFlBQVUsRUFBRSxtQkFMaEI7QUFNSUMsWUFBVSxFQUFFLG1CQU5oQjtBQU9JQyxhQUFXLEVBQUUsdUJBUGpCO0FBUUlDLFdBQVMsRUFBRSxJQVJmO0FBU0lDLE9BQUssRUFBRSxXQVRYO0FBU3dCO0FBQ3BCQyxnQkFBYyxFQUFFLENBQUMsSUFBRCxDQVZwQjtBQVUyQjtBQUN2QkMsVUFBUSxFQUFFLG1CQVhkO0FBWUlDLG9CQUFrQixFQUFFLElBWnhCO0FBWThCO0FBQzFCQyxvQkFBa0IsRUFBRSxLQWJ4QjtBQWErQjtBQUMzQkMsMEJBQXdCLEVBQUUsR0FkOUI7QUFjbUM7QUFDL0JDLDhCQUE0QixFQUFFLENBZmxDO0FBZXFDO0FBQ2pDQyxrQ0FBZ0MsRUFBRSxLQWhCdEM7QUFnQjZDO0FBQ3pDQywyQkFBeUIsRUFBRSxJQWpCL0I7QUFrQklDLDhCQUE0QixFQUFFLEtBbEJsQztBQW1CSUMsNkJBQTJCLEVBQUUsVUFuQmpDO0FBb0JJQywrQkFBNkIsRUFBRSxJQXBCbkM7QUFvQndDO0FBQ3BDQyw0QkFBMEIsRUFBRSxJQXJCaEM7QUFzQklDLGdDQUE4QixFQUFFLFFBdEJwQztBQXNCOEM7QUFDMUNDLHlCQUF1QixFQUFFLENBdkI3QjtBQXVCK0I7QUFDM0JDLHlDQUF1QyxFQUFFLENBeEI3QztBQXlCSUMsMENBQXdDLEVBQUUsRUF6QjlDO0FBMEJJQywyQ0FBeUMsRUFBRSxDQTFCL0M7QUEyQklDLG1DQUFpQyxFQUFFLEdBM0J2QztBQTRCSTtBQUNBQyxnQkFBYyxFQUFFLENBN0JwQjtBQTZCdUI7QUFDbkJDLGdCQUFjLEVBQUUsQ0E5QnBCO0FBOEJ1QjtBQUNuQkMsY0FBWSxFQUFFLEVBL0JsQjtBQWdDSUMscUJBQW1CLEVBQUUsRUFoQ3pCO0FBZ0M0QjtBQUN4QkMsK0JBQTZCLEVBQUMsQ0FqQ2xDO0FBaUNxQztBQUNqQ0MsNkJBQTJCLEVBQUMsRUFsQ2hDO0FBa0NvQztBQUNoQ0Msa0NBQWdDLEVBQUUsRUFuQ3RDO0FBbUMwQztBQUN0Q0MseUJBQXVCLEVBQUUsQ0FwQzdCO0FBcUNJQyx3QkFBc0IsRUFBRyxjQXJDN0I7QUFxQzZDO0FBQ3pDO0FBQ0FDLDRCQUEwQixFQUFFLENBdkNoQztBQXdDSUMsNEJBQTBCLEVBQUUsQ0F4Q2hDO0FBeUNJO0FBQ0FDLG9CQUFrQixFQUFFLENBMUN4QjtBQTJDSUMsb0JBQWtCLEVBQUUsQ0EzQ3hCO0FBNENJQyw0QkFBMEIsRUFBRSxPQTVDaEM7QUE0Q3dDO0FBQ3BDQywwQkFBd0IsRUFBRSxDQUFFLFdBQUYsRUFBZSxZQUFmLEVBQTZCLFdBQTdCLEVBQTBDLFdBQTFDLEVBQXVELFdBQXZELENBN0M5QjtBQThDSTtBQUNBQywyQkFBeUIsRUFBRSxHQS9DL0I7QUFnRElDLHFDQUFtQyxFQUFFLEdBaER6QztBQWlESTtBQUNBQyxZQUFVLEVBQUUsQ0FsRGhCO0FBbURJQyxZQUFVLEVBQUU7QUFuRGhCLHNEQXFEb0IsQ0FyRHBCLHNEQXNEb0IsQ0F0RHBCLG9EQXVEa0IsRUF2RGxCLHlEQXlEdUJqRCxLQUFLLENBQUNrRCxRQUFOLENBQWVDLFNBekR0QyxxREEwRG1CbkQsS0FBSyxDQUFDb0QsYUExRHpCLDREQTJEMEJwRCxLQUFLLENBQUNxRCxvQkEzRGhDLDhEQTRENEJuRCxjQUFjLENBQUNvRCxzQkE1RDNDLHlEQTZEdUJwRCxjQUFjLENBQUNxRCxpQkE3RHRDLG1FQThEaUNyRCxjQUFjLENBQUNzRCwyQkE5RGhELDZEQStEMkJ0RCxjQUFjLENBQUN1RCxxQkEvRDFDLDREQWdFMEJ2RCxjQUFjLENBQUN3RCxvQkFoRXpDLG9COzs7Ozs7Ozs7OztBQ0hBdkQsTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSTtBQUNBdUQscUJBQW1CLEVBQUUsZ0JBRnpCO0FBRTBDO0FBQ3RDQywyQkFBeUIsRUFBRSw2QkFIL0I7QUFJSUMsd0JBQXNCLEVBQUUsTUFKNUI7QUFLSUMsOEJBQTRCLEVBQUcsWUFMbkM7QUFNSUMsd0JBQXNCLEVBQUcsU0FON0I7QUFPSUMsNEJBQTBCLEVBQUUsVUFQaEM7QUFRSUMsOEJBQTRCLEVBQUUsUUFSbEM7QUFTSUMsZ0JBQWMsRUFBRSxrQkFUcEI7QUFVSUMsZ0NBQThCLEVBQUcsY0FWckM7QUFXSUMsMkJBQXlCLEVBQUcsU0FYaEM7QUFZSTtBQUNBQyxhQUFXLEVBQUUsUUFiakI7QUFjSUMsZUFBYSxFQUFFLE9BZG5CO0FBZUlDLG9CQUFrQixFQUFFLFVBZnhCO0FBZ0JJQyxtQkFBaUIsRUFBRyxTQWhCeEI7QUFpQkk7QUFDQUMsZ0JBQWMsRUFBRSxZQWxCcEI7QUFtQkk7QUFDQUMsaUJBQWUsRUFBRSxlQXBCckI7QUFxQkk7QUFDQUMsZUFBYSxFQUFFLGlCQXRCbkI7QUF1QklDLG9CQUFrQixFQUFFLGdCQXZCeEI7QUF3QklDLGlCQUFlLEVBQUcsdUJBeEJ0QjtBQXdCOEM7QUFDMUNDLGtCQUFnQixFQUFFLFVBekJ0QjtBQXlCaUM7QUFDN0I7QUFDQUMsZUFBYSxFQUNiO0FBQ0lDLFNBQUssRUFBRTtBQUFFQyxlQUFTLEVBQUUsR0FBYjtBQUFrQkMsY0FBUSxFQUFFO0FBQTVCLEtBRFg7QUFFSUMsUUFBSSxFQUFFO0FBQUVGLGVBQVMsRUFBRTtBQUFiLEtBRlY7QUFFOEI7QUFDMUJHLGdCQUFZLEVBQUU7QUFBRUYsY0FBUSxFQUFFO0FBQVo7QUFIbEIsR0E1Qko7QUFpQ0lHLHNCQUFvQixFQUFHO0FBQUVsQyxhQUFTLEVBQUUsQ0FBYjtBQUFnQitCLFlBQVEsRUFBRTtBQUExQixHQWpDM0I7QUFrQ0lJLE9BQUssRUFDTDtBQUNJTixTQUFLLEVBQUU7QUFBRUMsZUFBUyxFQUFFLEdBQWI7QUFBa0JDLGNBQVEsRUFBRTtBQUE1QixLQURYO0FBRUlDLFFBQUksRUFBRTtBQUFFRixlQUFTLEVBQUU7QUFBYixLQUZWLENBRThCOztBQUY5QixHQW5DSjtBQXVDSU0sVUFBUSxFQUNSO0FBQ0lDLFFBQUksRUFBRTtBQUFFUCxlQUFTLEVBQUUsR0FBYjtBQUFrQkMsY0FBUSxFQUFFO0FBQTVCLEtBRFY7QUFFSU8sUUFBSSxFQUFFO0FBQUVQLGNBQVEsRUFBRSxJQUFaO0FBQWtCUSxTQUFHLEVBQUMsQ0FBdEI7QUFBeUJDLGtCQUFZLEVBQUM7QUFBdEM7QUFGVixHQXhDSjtBQTRDSUMsUUFBTSxFQUNOO0FBQ0lKLFFBQUksRUFBRTtBQUFFUCxlQUFTLEVBQUUsR0FBYjtBQUFrQkMsY0FBUSxFQUFFO0FBQTVCO0FBRFYsR0E3Q0o7QUFnRElXLFFBQU0sRUFBRTtBQUFFMUMsYUFBUyxFQUFFLENBQWI7QUFBZ0IrQixZQUFRLEVBQUU7QUFBMUIsR0FoRFo7QUFpRElZLGNBQVksRUFBRTtBQUFFM0MsYUFBUyxFQUFFLENBQWI7QUFBZ0IrQixZQUFRLEVBQUU7QUFBMUIsR0FqRGxCO0FBa0RJO0FBQ0FhLGdCQUFjLEVBQUcsNkJBbkRyQjtBQW9ESXpDLHdCQUFzQixFQUFHLHNCQXBEN0I7QUFxRElDLG1CQUFpQixFQUFHLGdDQXJEeEI7QUFzREl5QyxjQUFZLEVBQUcsMkJBdERuQjtBQXVESXhDLDZCQUEyQixFQUFHLDRCQXZEbEM7QUF3REk7QUFDQXlDLGVBQWEsRUFBRyxzQkF6RHBCO0FBMERJeEMsdUJBQXFCLEVBQUcsbUJBMUQ1QjtBQTJESXlDLGFBQVcsRUFBRyxvQkEzRGxCO0FBNERJQyxhQUFXLEVBQUcsb0JBNURsQjtBQTZESTtBQUNBQyxjQUFZLEVBQUcsU0E5RG5CO0FBK0RJMUMsc0JBQW9CLEVBQUcsTUEvRDNCO0FBZ0VJMkMsWUFBVSxFQUFHLFFBaEVqQjtBQWlFSUMsWUFBVSxFQUFHLFFBakVqQjtBQWtFSTtBQUNBQyxpQkFBZSxFQUFHLENBbkV0Qjs7QUFvRUk7QUFDQXhFLGdCQUFjLEVBQUUsQ0FyRXBCO0FBc0VJQyxnQkFBYyxFQUFFLENBdEVwQjtBQXVFSUMsY0FBWSxFQUFFLEVBdkVsQjtBQXdFSXVFLFdBQVMsRUFBRSxDQXhFZjtBQXlFSUMsV0FBUyxFQUFFLENBekVmLENBeUVrQjs7QUF6RWxCLENBREEsQzs7Ozs7Ozs7Ozs7QUNBQXRHLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0k7QUFDQXNHLFlBQVUsRUFBRSxPQUZoQjtBQUdJQyxzQkFBb0IsRUFBRSxpQkFIMUI7QUFJSUMseUJBQXVCLEVBQUUsY0FKN0I7QUFLSUMsaUJBQWUsRUFBRSxjQUxyQjtBQU1JQyx3QkFBc0IsRUFBRSxtQkFONUI7QUFPSUMsMEJBQXdCLEVBQUUsY0FQOUI7QUFRSUMsaUJBQWUsRUFBRSxRQVJyQjtBQVNJQyx5QkFBdUIsRUFBRSxpQkFUN0I7QUFVSUMsaUJBQWUsRUFBRSxTQVZyQjtBQVdJdkMsZUFBYSxFQUFFLGlCQVhuQjtBQVlJd0MsY0FBWSxFQUFFLGdCQVpsQjtBQWFJQyxtQkFBaUIsRUFBRSxpQkFidkI7QUFjSUMsbUJBQWlCLEVBQUUsZUFkdkI7QUFlSUMsYUFBVyxFQUFFLHlCQWZqQjtBQWdCSUMsY0FBWSxFQUFFLE9BaEJsQjtBQWlCSUMsNkJBQTJCLEVBQUUsMEJBakJqQztBQWlCNEQ7QUFDeERDLGlCQUFlLEVBQUUsVUFsQnJCO0FBbUJJQyx1QkFBcUIsRUFBRSxvQkFuQjNCO0FBb0JJQyxnQkFBYyxFQUFFLFNBcEJwQjtBQXFCSUMsa0JBQWdCLEVBQUUscUJBckJ0QjtBQXNCSUMsaUJBQWUsRUFBRSxVQXRCckI7QUF1QklDLG1CQUFpQixFQUFFLFlBdkJ2QjtBQXdCSTtBQUNBQyxNQUFJLEVBQUU7QUFBRTlDLGFBQVMsRUFBRSxFQUFiO0FBQWlCQyxZQUFRLEVBQUU7QUFBM0IsR0F6QlY7QUEwQkk4QyxPQUFLLEVBQUU7QUFBRS9DLGFBQVMsRUFBRSxHQUFiO0FBQWtCQyxZQUFRLEVBQUU7QUFBNUIsR0ExQlg7QUEyQkloQyxVQUFRLEVBQUU7QUFBRUMsYUFBUyxFQUFFLENBQWI7QUFBZ0I4QixhQUFTLEVBQUMsRUFBMUI7QUFBOEJDLFlBQVEsRUFBRTtBQUF4QyxHQTNCZDtBQTJCOEQ7QUFDMUQrQyxhQUFXLEVBQUU7QUFBRTlFLGFBQVMsRUFBRSxDQUFiO0FBQWdCOEIsYUFBUyxFQUFDO0FBQTFCLEdBNUJqQjtBQTZCSWlELGVBQWEsRUFBRTtBQUFFakQsYUFBUyxFQUFFO0FBQWIsR0E3Qm5CO0FBOEJJa0QsT0FBSyxFQUFFO0FBQUVDLFNBQUssRUFBRSxNQUFUO0FBQWlCbEQsWUFBUSxFQUFFO0FBQTNCLEdBOUJYO0FBK0JJVyxRQUFNLEVBQUU7QUFBRTFDLGFBQVMsRUFBRSxDQUFiO0FBQWdCK0IsWUFBUSxFQUFFO0FBQTFCLEdBL0JaO0FBZ0NJbUQsbUJBQWlCLEVBQUUsQ0FBQyxHQWhDeEI7QUFpQ0lDLG1CQUFpQixFQUFFLEdBakN2QjtBQWtDSTtBQUNBbEYsZUFBYSxFQUFHLGFBbkNwQjtBQW9DSUMsc0JBQW9CLEVBQUcsb0NBcEMzQjtBQXFDSWtGLDZCQUEyQixFQUFHO0FBckNsQyxDQURBLEM7Ozs7Ozs7Ozs7O0FDQUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0U7Ozs7Ozs7Ozs7O0FDdEJBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFOzs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRDs7Ozs7Ozs7Ozs7QUN0QkFwSSxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJb0ksV0FBUyxFQUFFLFNBRGY7QUFFSUMsY0FBWSxFQUFHLHdDQUZuQjtBQUdJQyxnQkFBYyxFQUFFLGtCQUhwQjtBQUlJQyxRQUFNLEVBQUcsK0NBSmI7QUFLSUMsd0JBQXNCLEVBQUcsWUFMN0I7QUFNSUMsc0JBQW9CLEVBQUUsaUJBTjFCO0FBT0lDLHFCQUFtQixFQUFFLHFCQVB6QjtBQVFJQyxrQkFBZ0IsRUFBRSw4QkFSdEI7QUFTSUMsY0FBWSxFQUFFLFdBVGxCO0FBVUlDLG1CQUFpQixFQUFHLGtEQVZ4QjtBQVdJQyxpQkFBZSxFQUFHLHdDQVh0QjtBQVlJQyxVQUFRLEVBQUcsNEJBWmY7QUFhSUMsY0FBWSxFQUFHLHFEQWJuQjtBQWNJQyxnQkFBYyxFQUFHLGtDQWRyQjtBQWVJQyxZQUFVLEVBQUcsMkJBZmpCO0FBZ0JJQyxlQUFhLEVBQUcsMkNBaEJwQjtBQWlCSUMsY0FBWSxFQUFHLHNEQWpCbkI7QUFrQklDLFVBQVEsRUFBRyxlQWxCZjtBQW1CSUMsWUFBVSxFQUFHLDJEQW5CakI7QUFvQklDLGFBQVcsRUFBRyxhQXBCbEI7QUFxQklDLGdCQUFjLEVBQUcsb0JBckJyQjtBQXNCSUMsY0FBWSxFQUFHLGlCQXRCbkI7QUF1QklDLGFBQVcsRUFBRyw0R0F2QmxCO0FBd0JJQyxrQkFBZ0IsRUFBRyx3QkF4QnZCO0FBeUJJQyxlQUFhLEVBQUcsNENBekJwQjtBQTBCSUMscUJBQW1CLEVBQUcscU1BMUIxQjtBQTJCSUMsbUJBQWlCLEVBQUcsbUVBM0J4QjtBQTRCSUMsa0JBQWdCLEVBQUcsdUVBNUJ2QjtBQTZCSUMsWUFBVSxFQUFHLG1oQkE3QmpCO0FBOEJJQyxrQkFBZ0IsRUFBRSxrQkE5QnRCO0FBK0JJQyxjQUFZLEVBQUUsVUEvQmxCO0FBZ0NJQyxpQkFBZSxFQUFHO0FBaEN0QixDQURBLEM7Ozs7Ozs7Ozs7O0FDQUFwSyxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJb0ssaUJBQWUsRUFBRSxzQkFEckI7QUFFSUMsaUJBQWUsRUFBRSx1QkFGckI7QUFHSUMsZ0JBQWMsRUFBRSxxTEFIcEI7QUFJSUMsa0JBQWdCLEVBQUUsZUFKdEI7QUFLSUMsWUFBVSxFQUFFLE1BTGhCO0FBS3VCO0FBQ25CQyx5QkFBdUIsRUFBRyw2Q0FOOUI7QUFPSUMsZ0NBQThCLEVBQUcsa0RBUHJDO0FBUUlDLG1CQUFpQixFQUFFLGdEQVJ2QjtBQVNJQyxvQkFBa0IsRUFBRSwrTEFUeEI7QUFVSUMsdUJBQXFCLEVBQUUsNEJBVjNCO0FBV0lDLGFBQVcsRUFBRSwwQkFYakI7QUFZSUMsMkJBQXlCLEVBQUUsMERBWi9CO0FBYUlDLGNBQVksRUFBRSwwREFibEI7QUFjSUMscUJBQW1CLEVBQUUseUVBZHpCO0FBZUlDLFdBQVMsRUFBRSxpREFmZjtBQWdCSUMsZUFBYSxFQUFFLDRDQWhCbkI7QUFpQklDLFNBQU8sRUFBRSw4Q0FqQmI7QUFrQklDLFVBQVEsRUFBRSxrREFsQmQ7QUFtQklDLGFBQVcsRUFBRSxLQW5CakI7QUFvQklDLGFBQVcsRUFBRSxpQkFwQmpCO0FBcUJJQyx1QkFBcUIsRUFBRSxrRUFyQjNCO0FBc0JJQyxxQkFBbUIsRUFBRSxtREF0QnpCO0FBdUJJQyxnQkFBYyxFQUFFO0FBdkJwQixDQURBLEM7Ozs7Ozs7Ozs7O0FDQUEzTCxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJMkwsa0JBQWdCLEVBQUUsbUNBRHRCO0FBRUlDLDBCQUF3QixFQUFFLDZJQUY5QjtBQUdJQyxhQUFXLEVBQUUsa0VBSGpCO0FBSUlDLGVBQWEsRUFBRSwyRkFKbkI7QUFLSUMsY0FBWSxFQUFFLG9CQUxsQjtBQU1JQyxtQkFBaUIsRUFBRSw4Q0FOdkI7QUFPSUMsaUNBQStCLEVBQUUsc0RBUHJDO0FBUUlwRCxtQkFBaUIsRUFBRSx5REFSdkI7QUFTSXFELDRCQUEwQixFQUFFLG1EQVRoQztBQVVJcEQsaUJBQWUsRUFBRSxvQ0FWckI7QUFXSXFELGVBQWEsRUFBRSxvRUFYbkI7QUFZSUMsYUFBVyxFQUFFLCtIQVpqQjtBQWFJQyxnQkFBYyxFQUFFLGtGQWJwQjtBQWNJQyxpQkFBZSxFQUFFLFVBZHJCO0FBZUlDLHVCQUFxQixFQUFFLHNCQWYzQjtBQWdCSUMsd0JBQXNCLEVBQUUseUNBaEI1QjtBQWdCc0U7QUFDbEVDLGlCQUFlLEVBQUUsNElBakJyQjtBQWtCSUMsZ0JBQWMsRUFBRSxlQWxCcEI7QUFtQklDLGdCQUFjLEVBQUUsNEZBbkJwQjtBQW9CSUMsbUJBQWlCLEVBQUUscUZBcEJ2QjtBQXFCSUMscUJBQW1CLEVBQUUscUNBckJ6QjtBQXNCSUMsdUJBQXFCLEVBQUUscUJBdEIzQjtBQXVCSUMsbUJBQWlCLEVBQUUsZ0xBdkJ2QjtBQXdCSUMsc0JBQW9CLEVBQUUsZ0ZBeEIxQjtBQXlCSUMsc0JBQW9CLEVBQUUseUZBekIxQjtBQTBCSUMsb0JBQWtCLEVBQUcsOEhBMUJ6QjtBQTJCSUMsbUJBQWlCLEVBQUcsMEhBM0J4QjtBQTRCSUMsOEJBQTRCLEVBQUUscUVBNUJsQztBQTZCSUMsMkJBQXlCLEVBQUUsa0VBN0IvQjtBQThCSUMsdUJBQXFCLEVBQUUsd0pBOUIzQjtBQStCSUMseUJBQXVCLEVBQUUsdUVBL0I3QjtBQWdDSUMsbUJBQWlCLEVBQUcsWUFoQ3hCO0FBaUNJQyxtQkFBaUIsRUFBRywyQ0FqQ3hCO0FBa0NJQyx1QkFBcUIsRUFBRyxpSEFsQzVCO0FBbUNJQyxzQkFBb0IsRUFBRywrR0FuQzNCO0FBb0NJQyxzQkFBb0IsRUFBRyxpSkFwQzNCO0FBcUNJQyxzQkFBb0IsRUFBRywwQkFyQzNCO0FBc0NJQyxrQkFBZ0IsRUFBRyxlQXRDdkI7QUF1Q0lDLDRCQUEwQixFQUFHLHlRQXZDakM7QUF3Q0lDLDJCQUF5QixFQUFHLG9QQXhDaEM7QUF5Q0lDLDJCQUF5QixFQUFHLDRCQXpDaEM7QUEwQ0lDLDJCQUF5QixFQUFHLFNBMUNoQztBQTJDSUMseUJBQXVCLEVBQUcsb0lBM0M5QjtBQTRDSUMsd0JBQXNCLEVBQUcsZ0lBNUM3QjtBQTZDSUMsNEJBQTBCLEVBQUUsa1RBN0NoQztBQThDSUMsd0JBQXNCLEVBQUcsVUE5QzdCO0FBK0NJQywwQkFBd0IsRUFBRSw0REEvQzlCO0FBZ0RJQyx3QkFBc0IsRUFBRyw2Q0FoRDdCO0FBaURJQyw2QkFBMkIsRUFBRyxzSUFqRGxDO0FBa0RJQyw0QkFBMEIsRUFBRyxrSUFsRGpDO0FBbURJQywyQkFBeUIsRUFBRyxvQ0FuRGhDO0FBb0RJQyx1QkFBcUIsRUFBRyxxQkFwRDVCO0FBcURJQyx1QkFBcUIsRUFBRSxpTEFyRDNCO0FBc0RJQyxxQkFBbUIsRUFBRyxxckJBdEQxQjtBQXVESUMsb0JBQWtCLEVBQUcsd29CQXZEekI7QUF3RElDLG9CQUFrQixFQUFHLDRCQXhEekI7QUF5RElDLG9CQUFrQixFQUFHLGFBekR6QjtBQTBESUMsaUJBQWUsRUFBRSxxREExRHJCO0FBMkRJQyxvQkFBa0IsRUFBRSw2SEEzRHhCO0FBNERJQyxXQUFTLEVBQUUsdUNBNURmO0FBNkRJQyxzQkFBb0IsRUFBRyw4RUE3RDNCO0FBOERJckUsY0FBWSxFQUFHLDJCQTlEbkI7QUErRElzRSxrQkFBZ0IsRUFBRyxvRUEvRHZCO0FBZ0VJQyx1QkFBcUIsRUFBRyxvRkFoRTVCO0FBaUVJQyx1QkFBcUIsRUFBRyxvRkFqRTVCO0FBa0VJQyxVQUFRLEVBQUUsd0NBbEVkO0FBbUVJQyxvQkFBa0IsRUFBRSw4RUFuRXhCO0FBb0VJQyxxQkFBbUIsRUFBRSw0RUFwRXpCO0FBcUVJQyxjQUFZLEVBQUcsbUNBckVuQjtBQXNFSUMsVUFBUSxFQUFHLDRCQXRFZjtBQXVFSUMsa0JBQWdCLEVBQUcsbUNBdkV2QjtBQXdFSUMsWUFBVSxFQUFHLHNCQXhFakI7QUF5RUlDLG9CQUFrQixFQUFHLDZEQXpFekI7QUEwRUlDLFdBQVMsRUFBRyxtREExRWhCO0FBMkVJQyxpQkFBZSxFQUFFLHVLQTNFckI7QUE0RUlDLHVCQUFxQixFQUFHLCtJQTVFNUI7QUE2RUlDLDZCQUEyQixFQUFHLGlEQTdFbEM7QUE4RUlDLGdCQUFjLEVBQUUsMklBOUVwQjtBQStFSUMsMEJBQXdCLEVBQUUsbUNBL0U5QjtBQWdGSUMsbUJBQWlCLEVBQUcsNkpBaEZ4QjtBQWlGSUMsZ0NBQThCLEVBQUcseUVBakZyQztBQWtGSUMsc0JBQW9CLEVBQUcsOEZBbEYzQjtBQW1GSUMsMEJBQXdCLEVBQUcsK0hBbkYvQjtBQW9GSUMsd0JBQXNCLEVBQUcsOEhBcEY3QjtBQXFGSUMsMEJBQXdCLEVBQUUsa0dBckY5QjtBQXNGSUMsa0JBQWdCLEVBQUUsNkNBdEZ0QjtBQXVGSUMsMEJBQXdCLEVBQUUsb0hBdkY5QjtBQXdGSUMsK0JBQTZCLEVBQUUsOEJBeEZuQztBQXlGSUMsbUJBQWlCLEVBQUUsdUlBekZ2QjtBQTBGSUMsd0JBQXNCLEVBQUUsOEJBMUY1QjtBQTJGSUMsZ0JBQWMsRUFBRTtBQTNGcEIsQ0FEQSxDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBO0lBRU1DLEk7Ozs7Ozs7V0FFRixpQkFBZUMsS0FBZixFQUNBO0FBQ0ksVUFBR0EsS0FBSyxLQUFHQyxTQUFSLElBQXFCRCxLQUFLLEtBQUcsSUFBaEMsRUFDSSxPQUFPLElBQVAsQ0FESixLQUdBO0FBQ0lBLGFBQUssSUFBRSxFQUFQLENBREosQ0FDYzs7QUFDVkEsYUFBSyxHQUFDQSxLQUFLLENBQUNFLElBQU4sRUFBTjtBQUNBLFlBQUdGLEtBQUssS0FBRyxFQUFYLEVBQ0ksT0FBTyxJQUFQLENBREosS0FHSSxPQUFPLEtBQVA7QUFDUDtBQUNKOzs7V0FFRCx1QkFBcUJHLFFBQXJCLEVBQ0E7QUFDSSxVQUFHSixJQUFJLENBQUNLLE9BQUwsQ0FBYUQsUUFBYixDQUFILEVBQ0lBLFFBQVEsR0FBQyxJQUFULENBREosS0FHQTtBQUNJQSxnQkFBUSxJQUFFLEVBQVYsQ0FESixDQUNpQjs7QUFDYkEsZ0JBQVEsR0FBQ0EsUUFBUSxDQUFDRCxJQUFULEVBQVQ7QUFDSDtBQUNELGFBQU9DLFFBQVA7QUFDSDs7O1dBR0QsNkJBQTJCQSxRQUEzQixFQUFxQ0UsR0FBckMsRUFDQTtBQUNJRixjQUFRLElBQUUsRUFBVixDQURKLENBQ2lCOztBQUNkLFVBQUdBLFFBQVEsQ0FBQ0csTUFBVCxHQUFrQkQsR0FBckIsRUFDS0YsUUFBUSxHQUFDQSxRQUFRLENBQUNJLFNBQVQsQ0FBbUIsQ0FBbkIsRUFBdUJGLEdBQUcsR0FBQyxDQUEzQixJQUErQixHQUF4QztBQUNKLGFBQU9GLFFBQVA7QUFDSCxLLENBRUQ7Ozs7V0FDQSxvQkFBa0JBLFFBQWxCLEVBQTRCSyxNQUE1QixFQUNBO0FBQ0ksVUFBTUMsV0FBVyxHQUFHLElBQUlDLE1BQUosQ0FBV0MsTUFBTSxDQUFDQyxJQUFQLENBQVlKLE1BQVosRUFBb0JLLElBQXBCLENBQXlCLEdBQXpCLENBQVgsRUFBeUMsSUFBekMsQ0FBcEI7QUFDQSxhQUFPVixRQUFRLENBQUNXLE9BQVQsQ0FBaUJMLFdBQWpCLEVBQThCLFVBQUNNLE9BQUQsRUFDckM7QUFDSSxlQUFPUCxNQUFNLENBQUNPLE9BQUQsQ0FBYjtBQUNILE9BSE0sQ0FBUDtBQUlILEssQ0FFRDs7OztXQUNBLHNCQUFvQjdNLEdBQXBCLEVBQXlCbU0sR0FBekIsRUFDQTtBQUNJbk0sU0FBRyxHQUFHOE0sSUFBSSxDQUFDQyxJQUFMLENBQVUvTSxHQUFWLENBQU47QUFDQW1NLFNBQUcsR0FBR1csSUFBSSxDQUFDRSxLQUFMLENBQVdiLEdBQVgsQ0FBTjtBQUNBLGFBQU9XLElBQUksQ0FBQ0UsS0FBTCxDQUFXRixJQUFJLENBQUNHLE1BQUwsTUFBaUJkLEdBQUcsR0FBR25NLEdBQXZCLENBQVgsSUFBMENBLEdBQWpEO0FBQ0gsSyxDQUVEOzs7O1dBQ0Esb0JBQWtCa04sVUFBbEIsRUFDQTtBQUFBLFVBRDhCQyxJQUM5Qix1RUFEbUMsSUFDbkM7QUFDSSxVQUFHdEIsSUFBSSxDQUFDSyxPQUFMLENBQWFnQixVQUFiLENBQUgsRUFDSSxPQUFPLEVBQVA7QUFDSixVQUFJRSxNQUFNLEdBQUMsSUFBSUMsSUFBSixDQUFTSCxVQUFULENBQVg7QUFDQSxVQUFJSSxLQUFLLEdBQUNGLE1BQU0sQ0FBQ0csT0FBUCxLQUFpQixFQUEzQjtBQUNBLFVBQUdELEtBQUssQ0FBQ2xCLE1BQU4sS0FBZSxDQUFsQixFQUNJa0IsS0FBSyxHQUFDLE1BQUlBLEtBQVY7QUFDSixVQUFJRSxRQUFRLEdBQUVKLE1BQU0sQ0FBQ0ssUUFBUCxLQUFrQixDQUFuQixHQUFzQixFQUFuQztBQUNBLFVBQUdELFFBQVEsQ0FBQ3BCLE1BQVQsS0FBa0IsQ0FBckIsRUFDSW9CLFFBQVEsR0FBQyxNQUFJQSxRQUFiO0FBQ0osVUFBSUUsTUFBTSxHQUFDTixNQUFNLENBQUNPLFdBQVAsRUFBWDtBQUNBLFVBQUdSLElBQUksS0FBRyxJQUFWLEVBQ0ksT0FBT0csS0FBSyxHQUFDLEdBQU4sR0FBVUUsUUFBVixHQUFtQixHQUFuQixHQUF1QkUsTUFBOUIsQ0FESixLQUVLLElBQUlQLElBQUksS0FBRyxNQUFYLEVBQWtCO0FBQ25CLGVBQU9PLE1BQU0sR0FBQyxHQUFQLEdBQVdGLFFBQVgsR0FBb0IsR0FBcEIsR0FBd0JGLEtBQS9CLENBREMsS0FHRCxPQUFPRSxRQUFRLEdBQUMsR0FBVCxHQUFhRixLQUFiLEdBQW1CLEdBQW5CLEdBQXVCSSxNQUE5QjtBQUNQLEssQ0FFRDtBQUNBOzs7O1dBQ0EscUJBQW9CRSxRQUFwQixFQUE4QkMsUUFBOUIsRUFDQTtBQUNJLFVBQU1DLEtBQUssR0FBQ0YsUUFBUSxHQUFDZCxJQUFJLENBQUNFLEtBQUwsQ0FBV0YsSUFBSSxDQUFDRyxNQUFMLE1BQWVZLFFBQVEsR0FBQ0QsUUFBeEIsQ0FBWCxDQUFyQjtBQUNBLFVBQU1HLE9BQU8sR0FBQyxvREFBZDtBQUNBLFVBQU1DLE1BQU0sR0FBQyw4QkFBYjtBQUNBLFVBQUl4USxRQUFRLEdBQUN1USxPQUFPLENBQUNqQixJQUFJLENBQUNFLEtBQUwsQ0FBV0YsSUFBSSxDQUFDRyxNQUFMLEtBQWNjLE9BQU8sQ0FBQzNCLE1BQWpDLENBQUQsQ0FBcEI7O0FBQ0EsV0FBSSxJQUFJNkIsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFFSCxLQUFLLEdBQUMsQ0FBckIsRUFBd0JHLENBQUMsRUFBekIsRUFDQTtBQUNJLFlBQUlBLENBQUMsR0FBRyxDQUFMLEtBQVcsQ0FBZCxFQUNJelEsUUFBUSxJQUFFd1EsTUFBTSxDQUFDbEIsSUFBSSxDQUFDRSxLQUFMLENBQVdGLElBQUksQ0FBQ0csTUFBTCxLQUFjZSxNQUFNLENBQUM1QixNQUFoQyxDQUFELENBQWhCLENBREosS0FHSTVPLFFBQVEsSUFBRXVRLE9BQU8sQ0FBQ2pCLElBQUksQ0FBQ0UsS0FBTCxDQUFXRixJQUFJLENBQUNHLE1BQUwsS0FBY2MsT0FBTyxDQUFDM0IsTUFBakMsQ0FBRCxDQUFqQjtBQUNQOztBQUNENU8sY0FBUSxJQUFFdVEsT0FBTyxDQUFDakIsSUFBSSxDQUFDRSxLQUFMLENBQVdGLElBQUksQ0FBQ0csTUFBTCxLQUFjYyxPQUFPLENBQUMzQixNQUFqQyxDQUFELENBQWpCO0FBQ0EsYUFBTzVPLFFBQVA7QUFDSDs7Ozs7O0FBR0wvQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJtUixJQUFqQixDOzs7Ozs7Ozs7OztBQ25HQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEOzs7Ozs7Ozs7OztBQ3ZCQXBSLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0l3VCxXQUFTLEVBQ1QsQ0FDSTtBQUFFQyxVQUFNLEVBQUUsU0FBVjtBQUFxQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQztBQUFQO0FBQWpDLEdBREosRUFFSTtBQUFFRixVQUFNLEVBQUUsWUFBVjtBQUF3QkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxpQkFBUDtBQUEwQkMsUUFBRSxFQUFFO0FBQTlCO0FBQXBDLEdBRkosRUFHSTtBQUFFSCxVQUFNLEVBQUUsVUFBVjtBQUFzQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQztBQUFQO0FBQWxDLEdBSEosRUFJSTtBQUFFRixVQUFNLEVBQUUsU0FBVjtBQUFxQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQztBQUFQO0FBQWpDLEdBSkosQ0FGSjtBQVFJRSxXQUFTLEVBQ1QsQ0FDSTtBQUFFSixVQUFNLEVBQUUsU0FBVjtBQUFxQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQztBQUFQO0FBQWpDLEdBREosRUFFSTtBQUFFRixVQUFNLEVBQUUsa0JBQVY7QUFBOEJDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsd0JBQVA7QUFBaUNHLFNBQUcsRUFBRTtBQUF0QztBQUExQyxHQUZKLEVBR0k7QUFBRUwsVUFBTSxFQUFFLHNCQUFWO0FBQWtDQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDO0FBQVA7QUFBOUMsR0FISixFQUlJO0FBQUVGLFVBQU0sRUFBRSxRQUFWO0FBQW9CQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLFdBQVA7QUFBb0JHLFNBQUcsRUFBRTtBQUF6QjtBQUFoQyxHQUpKLEVBS0k7QUFBRUwsVUFBTSxFQUFFLFFBQVY7QUFBb0JDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsV0FBUDtBQUFvQkcsU0FBRyxFQUFFO0FBQXpCO0FBQWhDLEdBTEosQ0FUSjtBQWdCSUMseUJBQXVCLEVBQUUsRUFoQjdCO0FBaUJJQyxjQUFZLEVBQUcsY0FqQm5CO0FBa0JJQyxlQUFhLEVBQUcsWUFsQnBCO0FBbUJJQyxpQkFBZSxFQUFHLGNBbkJ0QjtBQW9CSUMsZUFBYSxFQUFHLGtCQXBCcEI7QUFxQklDLGdCQUFjLEVBQUcsZ0JBckJyQjtBQXNCSUMsYUFBVyxFQUFFLGFBdEJqQjtBQXVCSUMsOEJBQTRCLEVBQUUsb0JBdkJsQztBQXdCSUMscUJBQW1CLEVBQUUsMkJBeEJ6QjtBQXlCSUMsOEJBQTRCLEVBQUcsRUF6Qm5DO0FBMEJJQyxpQkFBZSxFQUFHLGFBMUJ0QjtBQTJCSUMsWUFBVSxFQUFFLDBCQTNCaEI7QUE0QklDLFlBQVUsRUFBRSxzQkE1QmhCO0FBNkJJQyxRQUFNLEVBQUUsa1NBN0JaO0FBOEJJQyxZQUFVLEVBQUUsdUJBOUJoQjtBQStCSUMsUUFBTSxFQUFFLCtjQS9CWjtBQWdDSUMsd0JBQXNCLEVBQUUsMENBaEM1QjtBQWlDSUMsd0JBQXNCLEVBQUUsaURBakM1QjtBQWtDSUMsa0JBQWdCLEVBQUUsNEJBbEN0QjtBQW1DSUMsZ0JBQWMsRUFBRSwyaUNBbkNwQjtBQW9DSUMsa0JBQWdCLEVBQUUsK0ZBcEN0QjtBQXFDSUMsYUFBVyxFQUFFO0FBckNqQixDQURBLEM7Ozs7Ozs7Ozs7O0FDQUFyVixNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJO0FBQ0F3VCxXQUFTLEVBQ1QsQ0FDSTtBQUFFQyxVQUFNLEVBQUUsU0FBVjtBQUFxQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxlQUFQO0FBQXdCRyxTQUFHLEVBQUU7QUFBN0I7QUFBakMsR0FESixFQUVJO0FBQUVMLFVBQU0sRUFBRSxXQUFWO0FBQXVCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLFNBQVA7QUFBa0JDLFFBQUUsRUFBQyxlQUFyQjtBQUFzQ2hQLFdBQUssRUFBQztBQUE1QztBQUFuQyxHQUZKLEVBR0k7QUFBRTZPLFVBQU0sRUFBRSxZQUFWO0FBQXdCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGlCQUFQO0FBQTBCQyxRQUFFLEVBQUUsaUJBQTlCO0FBQWlEaFAsV0FBSyxFQUFDO0FBQXZEO0FBQXBDLEdBSEosRUFJSTtBQUFFNk8sVUFBTSxFQUFFLFVBQVY7QUFBc0JDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsZ0JBQVA7QUFBeUIvTyxXQUFLLEVBQUM7QUFBL0I7QUFBbEMsR0FKSixFQUtJO0FBQUU2TyxVQUFNLEVBQUUsU0FBVjtBQUFxQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxHQUFQO0FBQVkvTyxXQUFLLEVBQUM7QUFBbEI7QUFBakMsR0FMSixDQUhKO0FBVUlpUCxXQUFTLEVBQ1QsQ0FDSTtBQUFFSixVQUFNLEVBQUUsTUFBVjtBQUFrQkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxpRUFBUDtBQUEwRS9PLFdBQUssRUFBQztBQUFoRjtBQUE5QixHQURKLEVBRUk7QUFBRTZPLFVBQU0sRUFBRSxTQUFWO0FBQXFCQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGVBQVA7QUFBd0IvTyxXQUFLLEVBQUM7QUFBOUI7QUFBakMsR0FGSixFQUdJO0FBQUU2TyxVQUFNLEVBQUUsa0JBQVY7QUFBOEJDLGNBQVUsRUFBRTtBQUFFQyxVQUFJLEVBQUMsd0JBQVA7QUFBaUNHLFNBQUcsRUFBRTtBQUF0QztBQUExQyxHQUhKLEVBSUk7QUFBRUwsVUFBTSxFQUFFLHNCQUFWO0FBQWtDQyxjQUFVLEVBQUU7QUFBRUMsVUFBSSxFQUFDLGVBQVA7QUFBd0IvTyxXQUFLLEVBQUM7QUFBOUI7QUFBOUMsR0FKSixFQUtJO0FBQUU2TyxVQUFNLEVBQUUsV0FBVjtBQUF1QkMsY0FBVSxFQUFFO0FBQUVDLFVBQUksRUFBQyxlQUFQO0FBQXdCRyxTQUFHLEVBQUU7QUFBN0I7QUFBbkMsR0FMSixDQVhKO0FBa0JJTyxhQUFXLEVBQUUsYUFsQmpCO0FBbUJJZ0IsV0FBUyxFQUFFLGVBbkJmO0FBb0JJcEIsZUFBYSxFQUFFLFlBcEJuQjtBQXFCSXFCLFNBQU8sRUFBRSxjQXJCYjtBQXNCSWxCLGdCQUFjLEVBQUcsZ0JBdEJyQjtBQXVCSW1CLGdCQUFjLEVBQUcsa0JBdkJyQjtBQXdCSUMsZUFBYSxFQUFHLGVBeEJwQjtBQXlCSXRCLGlCQUFlLEVBQUcsY0F6QnRCO0FBMEJJdUIsa0JBQWdCLEVBQUcsa0JBMUJ2QjtBQTJCSW5CLDhCQUE0QixFQUFFLG9CQTNCbEM7QUE0QklvQixjQUFZLEVBQUcsbUJBNUJuQjtBQTZCSXZCLGVBQWEsRUFBRyxrQkE3QnBCO0FBOEJJd0IsbUJBQWlCLEVBQUUsYUE5QnZCO0FBK0JJM0IsY0FBWSxFQUFHLGNBL0JuQjtBQWdDSTRCLGlCQUFlLEVBQUcsb0JBaEN0QjtBQWlDSXJCLHFCQUFtQixFQUFFLDJCQWpDekI7QUFrQ0lzQixvQkFBa0IsRUFBRyxvQkFsQ3pCOztBQW1DSTtBQUNBbkIsWUFBVSxFQUFFLDBCQXBDaEI7QUFxQ0lTLGtCQUFnQixFQUFFLCtGQXJDdEI7QUFzQ0lXLGtCQUFnQixFQUFFLG9CQXRDdEI7QUF1Q0lDLFlBQVUsRUFBRSx1U0F2Q2hCOztBQXdDSTtBQUNBQyxhQUFXLEVBQUUsZ0JBekNqQjtBQTBDSXJCLFlBQVUsRUFBRSxzQkExQ2hCO0FBMkNJQyxRQUFNLEVBQUUsa1RBM0NaO0FBNENJQyxZQUFVLEVBQUUsZ0NBNUNoQjtBQTZDSUMsUUFBTSxFQUFFLHNhQTdDWjtBQThDSW1CLGlCQUFlLEVBQUUsZ0NBOUNyQjtBQStDSUMscUJBQW1CLEVBQUcsa0JBL0MxQjtBQWdESUMsMEJBQXdCLEVBQUcsMENBaEQvQjs7QUFpREk7QUFDQXBCLHdCQUFzQixFQUFFLGdFQWxENUI7QUFtRElDLHdCQUFzQixFQUFFLHNGQW5ENUI7QUFvRElvQixlQUFhLEVBQUUsME5BcERuQjs7QUFxREk7QUFDQUMsY0FBWSxFQUFFLG1FQXREbEI7QUF1RElDLGlCQUFlLEVBQUUsbUZBdkRyQjtBQXdESUMsY0FBWSxFQUFFLHVLQXhEbEI7O0FBeURJO0FBQ0FDLDZCQUEyQixFQUFFLFFBMURqQztBQTJESUMsdUJBQXFCLEVBQUUsZ0JBM0QzQjtBQTRESUMsaUNBQStCLEVBQUUsMENBNURyQztBQTZESXpCLGtCQUFnQixFQUFFLDRCQTdEdEI7QUE4RElDLGdCQUFjLEVBQUUsNnZCQTlEcEI7QUErREl5Qix1QkFBcUIsRUFBRSx1a0JBL0QzQjs7QUFnRUk7QUFDQWxDLGlCQUFlLEVBQUcsYUFqRXRCO0FBa0VJbUMsZ0JBQWMsRUFBRSxXQWxFcEI7QUFtRUk3Qyx5QkFBdUIsRUFBRSxFQW5FN0I7QUFvRUk4QywrQkFBNkIsRUFBRSxDQXBFbkM7QUFxRUlyQyw4QkFBNEIsRUFBRztBQXJFbkMsQ0FEQSxDOzs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxNQUFNL0IsSUFBSSxHQUFDaFMsa0VBQWMsQ0FBQyxDQUFELENBQXpCOztBQUNBLE1BQU1xVyxvQkFBb0IsR0FBR2pYLG1CQUFPLENBQUMsbUVBQUQsQ0FBcEM7O0FBQ0EsTUFBTWtYLGNBQWMsR0FBR2xYLCtEQUFRLElBQWMsR0FBQ1cseURBQWYsR0FBcUIsVUFBckIsR0FBZ0NpUyxJQUFoQyxHQUFxQyxLQUF0QyxDQUE5QixDLENBRUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtDQUdBOztBQUNBLE1BQU07QUFBRXBLLGNBQUY7QUFBZ0JxQjtBQUFoQixJQUFnQzdKLG1FQUFRLElBQWEsR0FBQzRTLElBQWQsR0FBbUIsVUFBcEIsQ0FBN0M7O0FBQ0EsTUFBTTtBQUFFaEkseUJBQUY7QUFBMkJDLGdDQUEzQjtBQUEyREUsb0JBQTNEO0FBQStFYTtBQUEvRSxJQUF1RzVMLGlFQUFRLElBQWEsR0FBQzRTLElBQWQsR0FBbUIsUUFBcEIsQ0FBcEg7O0FBQ0EsTUFBTTtBQUFFdkQ7QUFBRixJQUFzQnJQLGdFQUFRLElBQWEsR0FBQzRTLElBQWQsR0FBbUIsT0FBcEIsQ0FBbkMsQyxDQUVBOzs7QUFDQSxNQUFNdUUsV0FBVyxHQUFHQyxRQUFRLENBQUNDLGNBQVQsQ0FBd0IsY0FBeEIsQ0FBcEI7QUFDQSxNQUFNQyxlQUFlLEdBQUdGLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixjQUF4QixDQUF4QjtBQUNBLE1BQU1FLGNBQWMsR0FBR0gsUUFBUSxDQUFDQyxjQUFULENBQXdCLGVBQXhCLENBQXZCO0FBQ0EsTUFBTUcsUUFBUSxHQUFHSixRQUFRLENBQUNDLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBakI7QUFDQSxNQUFNSSxhQUFhLEdBQUdMLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixZQUF4QixDQUF0QjtBQUNBLE1BQU1LLE9BQU8sR0FBR04sUUFBUSxDQUFDQyxjQUFULENBQXdCLGNBQXhCLENBQWhCO0FBQ0EsTUFBTU0sVUFBVSxHQUFHUCxRQUFRLENBQUNDLGNBQVQsQ0FBd0IsU0FBeEIsQ0FBbkI7QUFDQSxNQUFNTyxpQkFBaUIsR0FBR1IsUUFBUSxDQUFDQyxjQUFULENBQXdCLG9CQUF4QixDQUExQjtBQUNBLE1BQU1RLFdBQVcsR0FBR1QsUUFBUSxDQUFDQyxjQUFULENBQXdCLFVBQXhCLENBQXBCO0FBQ0EsTUFBTVMsZUFBZSxHQUFHVixRQUFRLENBQUNDLGNBQVQsQ0FBd0IsY0FBeEIsQ0FBeEI7QUFDQSxNQUFNVSxTQUFTLEdBQUdYLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixRQUF4QixDQUFsQjtBQUNBLE1BQU1XLFVBQVUsR0FBR1osUUFBUSxDQUFDQyxjQUFULENBQXdCLFFBQXhCLENBQW5CLEMsQ0FFQTs7QUFDQSxNQUFNWSxjQUFjLEdBQUcsTUFDdkI7QUFDSUMsa0VBQVEsQ0FBQ0gsU0FBRCxDQUFSLENBREosQ0FFSTs7QUFDQVIsZ0JBQWMsQ0FBQ1ksS0FBZixDQUFxQkMsT0FBckIsR0FBNkIsTUFBN0I7QUFDQWQsaUJBQWUsQ0FBQ2EsS0FBaEIsQ0FBc0JDLE9BQXRCLEdBQThCLE1BQTlCLENBSkosQ0FLSTs7QUFDQVgsZUFBYSxDQUFDWSxTQUFkLEdBQXdCLEVBQXhCO0FBQ0gsQ0FSRCxDLENBVUE7OztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLENBQUN2RSxFQUFELEVBQUt3RSxLQUFMLEtBQzNCO0FBQ0k7QUFDQU4sZ0JBQWM7QUFDZCxRQUFNTyxXQUFXLEdBQUcsSUFBSUMsY0FBSixFQUFwQjtBQUNBRCxhQUFXLENBQUNFLElBQVosQ0FBaUIsS0FBakIsRUFBd0J0WSwwREFBTSxHQUFDNlcsb0JBQW9CLENBQUM3UyxXQUE1QixHQUF3QzZTLG9CQUFvQixDQUFDNVMsYUFBN0QsR0FBMkUwUCxFQUFuRzs7QUFDQXlFLGFBQVcsQ0FBQ0csa0JBQVosR0FBaUMsWUFDakM7QUFDSSxRQUFJLEtBQUtDLFVBQUwsSUFBbUJILGNBQWMsQ0FBQ0ksSUFBdEMsRUFDQTtBQUNJLFVBQUlDLFFBQVEsR0FBQ0MsSUFBSSxDQUFDQyxLQUFMLENBQVcsS0FBS0MsWUFBaEIsQ0FBYjs7QUFDQSxVQUFJLEtBQUtDLE1BQUwsS0FBZ0IsR0FBaEIsSUFBdUJKLFFBQVEsQ0FBQ3pULEtBQVQsSUFBa0JtTSxTQUE3QyxFQUNBO0FBQ0ksY0FBTTJILE9BQU8sR0FDYjtBQUNJQyxrQkFBUSxFQUFHTixRQUFRLENBQUN6VCxLQUFULENBQWUwTyxFQUQ5QjtBQUVJc0YsbUJBQVMsRUFBR0MsOERBQVUsQ0FBQ1IsUUFBUSxDQUFDelQsS0FBVCxDQUFla1UsU0FBaEIsQ0FGMUI7QUFHSUMscUJBQVcsRUFBR0YsOERBQVUsQ0FBQ1IsUUFBUSxDQUFDelQsS0FBVCxDQUFlb1UsU0FBaEIsQ0FINUI7QUFJSUMscUJBQVcsRUFBSVosUUFBUSxDQUFDYSxjQUFULEtBQTBCbkksU0FBM0IsR0FBd0NzSCxRQUFRLENBQUNhLGNBQVQsQ0FBd0I5SCxNQUFoRSxHQUF5RTtBQUozRixTQURBO0FBT0EsY0FBTStILFVBQVUsR0FBQ0MsOERBQVUsQ0FBQzlPLGtCQUFELEVBQXFCb08sT0FBckIsQ0FBM0I7QUFDQVcsd0VBQVUsQ0FBQ3JDLGFBQUQsRUFBZ0IsR0FBaEIsRUFBcUJtQyxVQUFyQixFQUFpQyxFQUFqQyxFQUFxQyxDQUFDLE1BQUQsQ0FBckMsQ0FBVjs7QUFDQSxhQUFJLElBQUlHLElBQVIsSUFBZ0JqQixRQUFRLENBQUN6VCxLQUF6QixFQUNBO0FBQ0ksY0FBRzBTLFNBQVMsQ0FBQ2lDLFFBQVYsQ0FBbUJELElBQW5CLE1BQTJCdkksU0FBOUIsRUFDQTtBQUNJLGdCQUFHdUksSUFBSSxLQUFHLGNBQVAsSUFBeUJqQixRQUFRLENBQUN6VCxLQUFULENBQWUwVSxJQUFmLE1BQXVCLElBQW5ELEVBQ0loQyxTQUFTLENBQUNpQyxRQUFWLENBQW1CRCxJQUFuQixFQUF5QjVSLEtBQXpCLEdBQStCbVIsOERBQVUsQ0FBQ1IsUUFBUSxDQUFDelQsS0FBVCxDQUFlMFUsSUFBZixDQUFELEVBQXVCLE1BQXZCLENBQXpDLENBREosQ0FDNEU7QUFENUUsaUJBR0doQyxTQUFTLENBQUNpQyxRQUFWLENBQW1CRCxJQUFuQixFQUF5QjVSLEtBQXpCLEdBQStCMlEsUUFBUSxDQUFDelQsS0FBVCxDQUFlMFUsSUFBZixDQUEvQjtBQUNOO0FBQ0o7O0FBQ0R4QyxzQkFBYyxDQUFDWSxLQUFmLENBQXFCQyxPQUFyQixHQUE2QixPQUE3QjtBQUNBZCx1QkFBZSxDQUFDYSxLQUFoQixDQUFzQkMsT0FBdEIsR0FBOEIsT0FBOUI7QUFDQSxZQUFHVSxRQUFRLENBQUN6VCxLQUFULENBQWUsZUFBZixNQUFvQyxLQUF2QyxFQUNJaVMsZUFBZSxDQUFDMkMsWUFBaEIsQ0FBNkIsTUFBN0IsRUFBcUM3WiwwREFBTSxHQUFDNlcsb0JBQW9CLENBQUM3UyxXQUE1QixHQUF3QzZTLG9CQUFvQixDQUFDM1Msa0JBQTdELEdBQWdGLEdBQWhGLEdBQW9GeVAsRUFBcEYsR0FBdUYsR0FBdkYsR0FBMkZ3RSxLQUFoSSxFQURKLEtBR0lqQixlQUFlLENBQUMyQyxZQUFoQixDQUE2QixNQUE3QixFQUFxQzVaLDJEQUFPLEdBQUMsR0FBUixHQUFZNFcsb0JBQW9CLENBQUM5USxZQUFqQyxHQUE4QyxHQUE5QyxHQUFrRDJTLFFBQVEsQ0FBQ3pULEtBQVQsQ0FBZSxNQUFmLENBQWxELEdBQXlFLE9BQTlHLEVBekJSLENBMEJJOztBQUNBLFlBQUd5VCxRQUFRLENBQUNhLGNBQVQsS0FBNEJuSSxTQUE1QixJQUF5Q3NILFFBQVEsQ0FBQ2EsY0FBVCxDQUF3QjlILE1BQXhCLEtBQW1DLENBQS9FLEVBQ0E7QUFDSSxjQUFJcUksUUFBUSxHQUFDLEVBQWI7QUFBQSxjQUFpQkMsYUFBYSxHQUFHO0FBQUVDLG1CQUFPLEVBQUU7QUFBWCxXQUFqQzs7QUFDQSxlQUFJLElBQUkxRyxDQUFSLElBQWFvRixRQUFRLENBQUNhLGNBQXRCLEVBQ0lPLFFBQVEsSUFBRSxrQkFBZ0JoRCxjQUFjLENBQUN6Qyw0QkFBL0IsR0FBNEQsTUFBNUQsR0FBbUVxRSxRQUFRLENBQUNhLGNBQVQsQ0FBd0JqRyxDQUF4QixFQUEyQjVPLGFBQTNCLENBQXlDaVAsRUFBNUcsR0FBK0csc0JBQS9HLEdBQXNJK0UsUUFBUSxDQUFDYSxjQUFULENBQXdCakcsQ0FBeEIsRUFBMkI1TyxhQUEzQixDQUF5Q2lQLEVBQS9LLEdBQWtMLElBQWxMLEdBQXVMK0UsUUFBUSxDQUFDYSxjQUFULENBQXdCakcsQ0FBeEIsRUFBMkI1TyxhQUEzQixDQUF5Q0MsS0FBaE8sR0FBc08sV0FBaFA7O0FBQ0osY0FBRytULFFBQVEsQ0FBQ2EsY0FBVCxDQUF3QjlILE1BQXhCLEtBQWlDLENBQXBDLEVBQ0lpSSxnRUFBVSxDQUFDbEMsaUJBQUQsRUFBb0IsSUFBcEIsRUFBMEJoTix1QkFBdUIsQ0FBQ3lILE9BQXhCLENBQWdDLEtBQWhDLEVBQXVDeUcsUUFBUSxDQUFDYSxjQUFULENBQXdCOUgsTUFBL0QsQ0FBMUIsQ0FBVixDQURKLEtBR0lpSSxnRUFBVSxDQUFDbEMsaUJBQUQsRUFBb0IsSUFBcEIsRUFBMEIvTSw4QkFBMUIsQ0FBVjtBQUNKaVAsMEVBQVUsQ0FBQ2xDLGlCQUFELEVBQW9CLElBQXBCLEVBQTBCc0MsUUFBMUIsRUFBb0MsRUFBcEMsRUFBd0MsRUFBeEMsRUFBNEMsRUFBNUMsRUFBZ0QsS0FBaEQsQ0FBVjtBQUNIO0FBQ0o7QUFDSjtBQUNKLEdBOUNEOztBQStDQTFCLGFBQVcsQ0FBQzZCLGdCQUFaLENBQTZCLGVBQTdCLEVBQThDLFlBQVU5QixLQUF4RDtBQUNBQyxhQUFXLENBQUM4QixJQUFaO0FBQ0gsQ0F2REQ7O0FBeURBLE1BQU1DLFVBQVUsR0FBRyxZQUNuQjtBQUNJLE1BQ0E7QUFDSSxVQUFNQyxXQUFXLEdBQUMsTUFBTUMsb0VBQVksQ0FBQyxDQUFDLFNBQUQsRUFBWSxPQUFaLENBQUQsRUFBdUIsTUFBSXZELGNBQWMsQ0FBQzNDLGNBQTFDLEVBQTBEO0FBQUVtRyxhQUFPLEVBQUVyTCxlQUFYO0FBQTRCc0wsV0FBSyxFQUFDO0FBQWxDLEtBQTFELEVBQXVHQyxNQUFNLENBQUNDLFFBQTlHLENBQXBDOztBQUNBLFFBQUdMLFdBQUgsRUFDQTtBQUNJLFlBQU1NLElBQUksR0FBQ0MseUVBQVMsQ0FBQyxNQUFELEVBQVMsSUFBVCxDQUFwQjtBQUNBQyxvRkFBaUIsQ0FBQ0YsSUFBSSxDQUFDNUIsTUFBTixFQUFjaEMsY0FBZCxDQUFqQixDQUZKLENBRW1EOztBQUMvQ1EsYUFBTyxDQUFDUyxLQUFSLENBQWNDLE9BQWQsR0FBc0IsT0FBdEI7O0FBQ0EsVUFBRyxDQUFDekcsMkRBQU8sQ0FBQ29KLHlFQUFTLENBQUMsU0FBRCxDQUFWLENBQVgsRUFDQTtBQUNJakIsd0VBQVUsQ0FBQ25DLFVBQUQsRUFBYSxHQUFiLEVBQWtCb0QseUVBQVMsQ0FBQyxTQUFELEVBQVksSUFBWixDQUFULENBQTJCTCxPQUE3QyxFQUFzRCxFQUF0RCxFQUEwRCxDQUFDSyx5RUFBUyxDQUFDLFNBQUQsRUFBWSxJQUFaLENBQVQsQ0FBMkJKLEtBQTVCLENBQTFELEVBQThGLEVBQTlGLEVBQWtHLEtBQWxHLENBQVY7QUFDQU0sb0ZBQVksQ0FBQyxTQUFELENBQVo7QUFDSCxPQVJMLENBU0k7OztBQUNBQyxtRkFBcUIsQ0FBQ2pFLG9CQUFELEVBQXVCZSxVQUF2QixDQUFyQjtBQUNBa0QsbUZBQXFCLENBQUNqRSxvQkFBb0IsQ0FBQzVSLEtBQXRCLEVBQTZCMFMsU0FBN0IsQ0FBckI7QUFDQUUsb0JBQWMsR0FabEIsQ0FhSTs7QUFDQSxVQUFJa0QsUUFBUSxHQUFDQyxrRUFBWSxFQUF6QjtBQUNBLFVBQUdELFFBQVEsSUFBSUEsUUFBUSxDQUFDcEgsRUFBVCxLQUFjdkMsU0FBN0IsRUFDSThHLGtCQUFrQixDQUFDNkMsUUFBUSxDQUFDcEgsRUFBVixFQUFjK0csSUFBSSxDQUFDdkMsS0FBbkIsQ0FBbEIsQ0FoQlIsQ0FpQkk7O0FBQ0FwQixpQkFBVyxDQUFDa0UsZ0JBQVosQ0FBNkIsT0FBN0IsRUFBc0MsVUFBU0MsQ0FBVCxFQUN0QztBQUNJckQsc0JBQWM7QUFDakIsT0FIRCxFQWxCSixDQXNCSTs7QUFDQUYsZUFBUyxDQUFDc0QsZ0JBQVYsQ0FBMkIsUUFBM0IsRUFBcUMsVUFBU0MsQ0FBVCxFQUNyQztBQUNJQSxTQUFDLENBQUNDLGNBQUY7QUFDQTFELG1CQUFXLENBQUNRLFNBQVosR0FBc0IsRUFBdEI7QUFDQSxZQUFJbUQsS0FBSyxHQUFDQywwRUFBa0IsQ0FBQzFELFNBQUQsQ0FBNUI7QUFDQSxjQUFNMkQsYUFBYSxHQUFHLElBQUlqRCxjQUFKLEVBQXRCO0FBQ0EsWUFBRyxDQUFDOUcsMkRBQU8sQ0FBQzZKLEtBQUssQ0FBQ3pILEVBQVAsQ0FBUixJQUF1QnlILEtBQUssQ0FBQ0csUUFBTixLQUFtQm5LLFNBQTdDLEVBQ0lrSyxhQUFhLENBQUNoRCxJQUFkLENBQW1CLFFBQW5CLEVBQTZCdFksMERBQU0sR0FBQzZXLG9CQUFvQixDQUFDN1MsV0FBNUIsR0FBd0MsR0FBeEMsR0FBNENvWCxLQUFLLENBQUN6SCxFQUEvRSxFQURKLEtBRUssSUFBRyxDQUFDcEMsMkRBQU8sQ0FBQzZKLEtBQUssQ0FBQ3pILEVBQVAsQ0FBWCxFQUNEMkgsYUFBYSxDQUFDaEQsSUFBZCxDQUFtQixLQUFuQixFQUEwQnRZLDBEQUFNLEdBQUM2VyxvQkFBb0IsQ0FBQzdTLFdBQTVCLEdBQXdDLEdBQXhDLEdBQTRDb1gsS0FBSyxDQUFDekgsRUFBNUUsRUFEQyxDQUMrRTtBQUQvRSxhQUdEMkgsYUFBYSxDQUFDaEQsSUFBZCxDQUFtQixNQUFuQixFQUEyQnRZLDBEQUFNLEdBQUM2VyxvQkFBb0IsQ0FBQzdTLFdBQXZELEVBVlIsQ0FVNEU7O0FBQ3hFc1gscUJBQWEsQ0FBQy9DLGtCQUFkLEdBQW1DLFlBQ25DO0FBQ0ksY0FBSSxLQUFLQyxVQUFMLElBQW1CSCxjQUFjLENBQUNJLElBQXRDLEVBQ0E7QUFDSSxnQkFBSUMsUUFBUSxHQUFDQyxJQUFJLENBQUNDLEtBQUwsQ0FBVyxLQUFLQyxZQUFoQixDQUFiOztBQUNBLGdCQUFJLEtBQUtDLE1BQUwsS0FBZ0IsR0FBaEIsSUFBdUJKLFFBQVEsQ0FBQy9FLEVBQVQsSUFBZXZDLFNBQTFDLEVBQXFEO0FBQ3JEO0FBQ0lzSSxnRkFBVSxDQUFDakMsV0FBRCxFQUFjLEdBQWQsRUFBbUJyUCxZQUFuQixFQUFpQyxFQUFqQyxFQUFxQyxDQUFDLFNBQUQsQ0FBckMsQ0FBVjtBQUNBZ1QscUJBQUssQ0FBQ3pILEVBQU4sR0FBUytFLFFBQVEsQ0FBQy9FLEVBQWxCLENBRkosQ0FFMEI7QUFDekIsZUFKRCxNQUtLLElBQUksS0FBS21GLE1BQUwsS0FBZ0IsR0FBaEIsSUFBdUJKLFFBQVEsQ0FBQzRCLE9BQVQsSUFBb0JsSixTQUEvQyxFQUEwRDtBQUMvRDtBQUNJLG9CQUFHb0ssS0FBSyxDQUFDQyxPQUFOLENBQWMvQyxRQUFRLENBQUM0QixPQUF2QixDQUFILEVBQ0k1QixRQUFRLENBQUM0QixPQUFULEdBQW1CNUIsUUFBUSxDQUFDNEIsT0FBVCxDQUFpQnRJLElBQWpCLENBQXNCLE1BQXRCLENBQW5CLENBREosS0FHSTBHLFFBQVEsQ0FBQzRCLE9BQVQsR0FBbUI1QixRQUFRLENBQUM0QixPQUE1QjtBQUNKWixnRkFBVSxDQUFDakMsV0FBRCxFQUFjLEdBQWQsRUFBbUJpQixRQUFRLENBQUM0QixPQUE1QixFQUFxQyxFQUFyQyxFQUF5QyxDQUFDLFNBQUQsQ0FBekMsQ0FBVjtBQUNILGVBUEksTUFRQSxJQUFJNUIsUUFBUSxDQUFDZ0QsTUFBYixFQUNMO0FBQ0ksa0JBQUdGLEtBQUssQ0FBQ0MsT0FBTixDQUFjL0MsUUFBUSxDQUFDZ0QsTUFBdkIsQ0FBSCxFQUNJaEQsUUFBUSxDQUFDZ0QsTUFBVCxHQUFrQmhELFFBQVEsQ0FBQ2dELE1BQVQsQ0FBZ0IxSixJQUFoQixDQUFxQixNQUFyQixDQUFsQixDQURKLEtBR0kwRyxRQUFRLENBQUNnRCxNQUFULEdBQWtCalMsV0FBbEI7QUFDSmlRLDhFQUFVLENBQUNqQyxXQUFELEVBQWMsR0FBZCxFQUFtQmlCLFFBQVEsQ0FBQ2dELE1BQTVCLEVBQW9DLEVBQXBDLEVBQXdDLENBQUMsT0FBRCxDQUF4QyxDQUFWO0FBQ0gsYUFQSSxNQVNEaEMsZ0VBQVUsQ0FBQ2pDLFdBQUQsRUFBYyxHQUFkLEVBQW1CaE8sV0FBbkIsRUFBZ0MsRUFBaEMsRUFBb0MsQ0FBQyxPQUFELENBQXBDLENBQVY7O0FBQ0osZ0JBQUc4SCwyREFBTyxDQUFDbUgsUUFBUSxDQUFDZ0QsTUFBVixDQUFWLEVBQ0E7QUFDSSxrQkFBR04sS0FBSyxDQUFDRyxRQUFOLEtBQW1CbkssU0FBdEIsRUFDSThHLGtCQUFrQixDQUFDa0QsS0FBSyxDQUFDekgsRUFBUCxFQUFXK0csSUFBSSxDQUFDdkMsS0FBaEIsQ0FBbEIsQ0FESixDQUM2QztBQUQ3QyxtQkFHSU4sY0FBYztBQUNyQjtBQUNKO0FBQ0osU0FwQ0Q7O0FBcUNBeUQscUJBQWEsQ0FBQ3JCLGdCQUFkLENBQStCLGNBQS9CLEVBQStDLGtCQUEvQztBQUNBcUIscUJBQWEsQ0FBQ3JCLGdCQUFkLENBQStCLGVBQS9CLEVBQWdELFlBQVVTLElBQUksQ0FBQ3ZDLEtBQS9EO0FBQ0EsWUFBR2lELEtBQUgsRUFDSUUsYUFBYSxDQUFDcEIsSUFBZCxDQUFtQnZCLElBQUksQ0FBQ2dELFNBQUwsQ0FBZVAsS0FBZixDQUFuQjtBQUNQLE9BckRELEVBdkJKLENBOEVJOztBQUNBeEQsZ0JBQVUsQ0FBQ3FELGdCQUFYLENBQTRCLFFBQTVCLEVBQXNDLFVBQVNDLENBQVQsRUFDdEM7QUFDSUEsU0FBQyxDQUFDQyxjQUFGO0FBQ0EsWUFBSUMsS0FBSyxHQUFDQywwRUFBa0IsQ0FBQ3pELFVBQUQsQ0FBNUI7QUFDQSxjQUFNZ0UsU0FBUyxHQUFHLElBQUl2RCxjQUFKLEVBQWxCO0FBQ0F1RCxpQkFBUyxDQUFDdEQsSUFBVixDQUFlLE1BQWYsRUFBdUJ0WSwwREFBTSxHQUFDNlcsb0JBQW9CLENBQUM3UyxXQUE1QixHQUF3QzZTLG9CQUFvQixDQUFDMVMsaUJBQXBGOztBQUNBeVgsaUJBQVMsQ0FBQ3JELGtCQUFWLEdBQStCLFlBQy9CO0FBQ0ksY0FBSSxLQUFLQyxVQUFMLElBQW1CSCxjQUFjLENBQUNJLElBQXRDLEVBQ0E7QUFDSSxnQkFBSUMsUUFBUSxHQUFDQyxJQUFJLENBQUNDLEtBQUwsQ0FBVyxLQUFLQyxZQUFoQixDQUFiOztBQUNBLGdCQUFJLEtBQUtDLE1BQUwsS0FBZ0IsR0FBaEIsSUFBdUIwQyxLQUFLLENBQUNDLE9BQU4sQ0FBYy9DLFFBQWQsQ0FBM0IsRUFDQTtBQUNJLGtCQUFHQSxRQUFRLENBQUNqSCxNQUFULEtBQW9CLENBQXZCLEVBQ0lpSSxnRUFBVSxDQUFDaEMsZUFBRCxFQUFrQixHQUFsQixFQUF1QmxNLG1CQUF2QixFQUE0QyxFQUE1QyxFQUFnRCxDQUFDLE1BQUQsQ0FBaEQsQ0FBVixDQURKLEtBR0E7QUFDSSxvQkFBSXFRLFVBQVUsR0FBQyw0QkFBZjs7QUFDQSxxQkFBSSxJQUFJdkksQ0FBUixJQUFhb0YsUUFBYixFQUNJbUQsVUFBVSxJQUFFLG9CQUFrQm5ELFFBQVEsQ0FBQ3BGLENBQUQsQ0FBUixDQUFZSyxFQUE5QixHQUFpQyxJQUFqQyxHQUFzQytFLFFBQVEsQ0FBQ3BGLENBQUQsQ0FBUixDQUFZM08sS0FBbEQsR0FBd0QsV0FBcEU7O0FBQ0orVSxnRkFBVSxDQUFDaEMsZUFBRCxFQUFrQixRQUFsQixFQUE0Qm1FLFVBQTVCLEVBQXdDLGNBQXhDLENBQVY7QUFDQSxzQkFBTUMsWUFBWSxHQUFDOUUsUUFBUSxDQUFDQyxjQUFULENBQXdCLGNBQXhCLENBQW5CO0FBQ0E2RSw0QkFBWSxDQUFDYixnQkFBYixDQUE4QixRQUE5QixFQUF3QyxZQUN4QztBQUNJLHNCQUFHYSxZQUFZLENBQUMvVCxLQUFiLEtBQXVCLEVBQTFCLEVBQ0ltUSxrQkFBa0IsQ0FBQzRELFlBQVksQ0FBQy9ULEtBQWQsRUFBcUIyUyxJQUFJLENBQUN2QyxLQUExQixDQUFsQjtBQUNQLGlCQUpEO0FBS0g7QUFDSixhQWpCRCxNQWtCSyxJQUFJTyxRQUFRLENBQUNnRCxNQUFiLEVBQ0w7QUFDSSxrQkFBR0YsS0FBSyxDQUFDQyxPQUFOLENBQWMvQyxRQUFRLENBQUNnRCxNQUF2QixDQUFILEVBQ0loRCxRQUFRLENBQUNnRCxNQUFULEdBQWtCaEQsUUFBUSxDQUFDZ0QsTUFBVCxDQUFnQjFKLElBQWhCLENBQXFCLE1BQXJCLENBQWxCLENBREosS0FHSTBHLFFBQVEsQ0FBQ2dELE1BQVQsR0FBa0JqUyxXQUFsQjtBQUNKaVEsOEVBQVUsQ0FBQ2hDLGVBQUQsRUFBa0IsR0FBbEIsRUFBdUJnQixRQUFRLENBQUNnRCxNQUFoQyxFQUF3QyxFQUF4QyxFQUE0QyxDQUFDLE9BQUQsQ0FBNUMsQ0FBVjtBQUNILGFBUEksTUFTRGhDLGdFQUFVLENBQUNoQyxlQUFELEVBQWtCLEdBQWxCLEVBQXVCak8sV0FBdkIsRUFBb0MsRUFBcEMsRUFBd0MsQ0FBQyxPQUFELENBQXhDLENBQVY7QUFDUDtBQUNKLFNBbENEOztBQW1DQW1TLGlCQUFTLENBQUMzQixnQkFBVixDQUEyQixjQUEzQixFQUEyQyxrQkFBM0M7QUFDQTJCLGlCQUFTLENBQUMzQixnQkFBVixDQUEyQixlQUEzQixFQUE0QyxZQUFVUyxJQUFJLENBQUN2QyxLQUEzRDtBQUNBLFlBQUdpRCxLQUFILEVBQ0lRLFNBQVMsQ0FBQzFCLElBQVYsQ0FBZXZCLElBQUksQ0FBQ2dELFNBQUwsQ0FBZVAsS0FBZixDQUFmO0FBQ1AsT0E3Q0Q7QUE4Q0g7QUFDSixHQWxJRCxDQW1JQSxPQUFNRixDQUFOLEVBQ0E7QUFDSXhCLG9FQUFVLENBQUN0QyxRQUFELEVBQVcsR0FBWCxFQUFnQjNOLFdBQWhCLEVBQTZCLEVBQTdCLEVBQWlDLENBQUMsT0FBRCxDQUFqQyxDQUFWO0FBQ0FzUyxXQUFPLENBQUNDLEtBQVIsQ0FBY2QsQ0FBZDtBQUNIO0FBQ0osQ0ExSUQ7O0FBMklBZixVQUFVO0FBQ1Y4QixxRUFBUSxHOzs7Ozs7Ozs7Ozs7QUMxUFI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRU8sTUFBTUMsVUFBVSxHQUFHLENBQUN4VSxJQUFELEVBQU9pUyxJQUFQLEtBQzFCO0FBQ0l3QyxjQUFZLENBQUNDLE9BQWIsQ0FBcUIxVSxJQUFyQixFQUEyQmlSLElBQUksQ0FBQ2dELFNBQUwsQ0FBZWhDLElBQWYsQ0FBM0I7QUFDSCxDQUhNO0FBS0EsTUFBTWdCLFNBQVMsR0FBRyxDQUFDalQsSUFBRCxFQUFPMlUsSUFBSSxHQUFDLEtBQVosS0FDekI7QUFDSSxNQUFHQSxJQUFILEVBQ0ksT0FBTzFELElBQUksQ0FBQ0MsS0FBTCxDQUFXdUQsWUFBWSxDQUFDRyxPQUFiLENBQXFCNVUsSUFBckIsQ0FBWCxDQUFQLENBREosS0FHSSxPQUFPeVUsWUFBWSxDQUFDRyxPQUFiLENBQXFCNVUsSUFBckIsQ0FBUDtBQUNQLENBTk07QUFRQSxNQUFNbVQsWUFBWSxHQUFJblQsSUFBRCxJQUM1QjtBQUNJeVUsY0FBWSxDQUFDSSxVQUFiLENBQXdCN1UsSUFBeEI7QUFDSCxDQUhNLEM7Ozs7Ozs7Ozs7OztBQ2hCUDtBQUFBO0FBQUE7QUFBQTtDQUVBOztBQUNPLE1BQU1nUyxVQUFVLEdBQUcsQ0FBQzhDLFNBQUQsRUFBWUMsT0FBWixFQUFxQkMsVUFBVSxHQUFDLEVBQWhDLEVBQW9DQyxLQUFLLEdBQUMsRUFBMUMsRUFBOENDLFFBQVEsR0FBQyxFQUF2RCxFQUEyREMsYUFBYSxHQUFDLEVBQXpFLEVBQTZFNUssT0FBTyxHQUFDLElBQXJGLEtBQzFCO0FBQ0ksTUFBR1YsMkRBQU8sQ0FBQ2tMLE9BQUQsQ0FBUCxJQUFvQmxMLDJEQUFPLENBQUNpTCxTQUFELENBQTlCLEVBQ0ksT0FBTyxLQUFQLENBREosS0FHQTtBQUNJLFVBQU1NLFVBQVUsR0FBQzlGLFFBQVEsQ0FBQytGLGFBQVQsQ0FBdUJOLE9BQXZCLENBQWpCO0FBRUEsUUFBRyxDQUFDbEwsMkRBQU8sQ0FBQ29MLEtBQUQsQ0FBWCxFQUFtQjtBQUNmRyxnQkFBVSxDQUFDbkosRUFBWCxHQUFjZ0osS0FBZDs7QUFFSixRQUFHbkIsS0FBSyxDQUFDQyxPQUFOLENBQWNtQixRQUFkLEtBQTJCQSxRQUFRLENBQUNuTCxNQUFULElBQWlCLENBQS9DLEVBQ0E7QUFDSSxXQUFJLElBQUk2QixDQUFSLElBQWFzSixRQUFiLEVBQ0lFLFVBQVUsQ0FBQ0UsU0FBWCxDQUFxQkMsR0FBckIsQ0FBeUJMLFFBQVEsQ0FBQ3RKLENBQUQsQ0FBakM7QUFDUDs7QUFFRCxRQUFHLE9BQU91SixhQUFQLEtBQXlCLFFBQTVCLEVBQXNDO0FBQ3RDO0FBQ0ksYUFBSSxJQUFJSyxZQUFSLElBQXdCTCxhQUF4QixFQUNJQyxVQUFVLENBQUNqRCxZQUFYLENBQXdCcUQsWUFBeEIsRUFBc0NMLGFBQWEsQ0FBQ0ssWUFBRCxDQUFuRDtBQUNQOztBQUVELFFBQUcsQ0FBQzNMLDJEQUFPLENBQUNtTCxVQUFELENBQVgsRUFDSUksVUFBVSxDQUFDN0UsU0FBWCxHQUFxQnlFLFVBQVUsQ0FBQ3pLLE9BQVgsQ0FBbUIsS0FBbkIsRUFBeUIsTUFBekIsQ0FBckIsQ0FuQlIsQ0FtQjhEOztBQUUxRCxRQUFHQSxPQUFILEVBQ0l1SyxTQUFTLENBQUN2RSxTQUFWLEdBQW9CLEVBQXBCO0FBQ0p1RSxhQUFTLENBQUNXLFdBQVYsQ0FBc0JMLFVBQXRCO0FBQ0g7QUFDSixDQTlCTSxDOzs7Ozs7Ozs7Ozs7QUNIUDtBQUFBO0FBQUE7QUFBQTtBQUVPLE1BQU1iLFFBQVEsR0FBRyxNQUN4QjtBQUNJRixTQUFPLENBQUNxQixHQUFSLENBQVkseU9BQVo7QUFDQSxTQUFPLElBQVA7QUFDSCxDQUpNO0FBTUEsTUFBTXhDLGlCQUFpQixHQUFHLENBQUM5QixNQUFELEVBQVNoQyxjQUFULEtBQ2pDO0FBQ0ksUUFBTXVHLElBQUksR0FBQ3JHLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixpQkFBeEIsQ0FBWDtBQUNBLFFBQU1xRyxRQUFRLEdBQUN4RSxNQUFNLEdBQUMsVUFBdEI7QUFDQXVFLE1BQUksQ0FBQzNKLElBQUwsR0FBVSxNQUFJb0QsY0FBYyxDQUFDd0csUUFBRCxDQUE1QjtBQUNILENBTE0sQzs7Ozs7Ozs7Ozs7O0FDUlA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Q0FFQTs7QUFDTyxNQUFNeEMscUJBQXFCLEdBQUcsQ0FBQ3lDLFVBQUQsRUFBYUMsTUFBYixLQUNyQztBQUNJLE9BQUksSUFBSWxLLENBQVIsSUFBYWtLLE1BQU0sQ0FBQzVELFFBQXBCLEVBQ0E7QUFDSSxRQUFHLENBQUNySSwyREFBTyxDQUFDaU0sTUFBTSxDQUFDNUQsUUFBUCxDQUFnQnRHLENBQWhCLEVBQW1CSyxFQUFwQixDQUFYLEVBQ0E7QUFDSSxVQUFJOEosT0FBTyxHQUFDRCxNQUFNLENBQUM1RCxRQUFQLENBQWdCdEcsQ0FBaEIsRUFBbUJLLEVBQS9COztBQUNBLFVBQUc0SixVQUFVLENBQUNFLE9BQUQsQ0FBVixLQUFzQnJNLFNBQXpCLEVBQ0E7QUFDSSxZQUFJc00sU0FBUyxHQUFDMUcsUUFBUSxDQUFDQyxjQUFULENBQXdCd0csT0FBeEIsQ0FBZDs7QUFDQSxhQUFLLElBQUlFLFNBQVQsSUFBc0JKLFVBQVUsQ0FBQ0UsT0FBRCxDQUFoQyxFQUNJQyxTQUFTLENBQUM3RCxZQUFWLENBQXVCOEQsU0FBdkIsRUFBa0NKLFVBQVUsQ0FBQ0UsT0FBRCxDQUFWLENBQW9CRSxTQUFwQixDQUFsQztBQUNQO0FBQ0o7QUFDSjs7QUFDRCxTQUFPLElBQVA7QUFDSCxDQWhCTSxDLENBa0JQOztBQUNPLE1BQU10QyxrQkFBa0IsR0FBSW1DLE1BQUQsSUFDbEM7QUFDSSxRQUFNcEMsS0FBSyxHQUFDLEVBQVo7QUFDQSxRQUFNd0MsUUFBUSxHQUFHLElBQUlDLFFBQUosQ0FBYUwsTUFBYixDQUFqQjs7QUFDQSxPQUFJLElBQUlNLE1BQVIsSUFBa0JGLFFBQVEsQ0FBQ0csT0FBVCxFQUFsQixFQUNHM0MsS0FBSyxDQUFDMEMsTUFBTSxDQUFDLENBQUQsQ0FBUCxDQUFMLEdBQWlCQSxNQUFNLENBQUMsQ0FBRCxDQUF2Qjs7QUFDSCxTQUFPMUMsS0FBUDtBQUNILENBUE0sQyxDQVNQO0FBQ0E7O0FBQ08sTUFBTXRELFFBQVEsR0FBSTBGLE1BQUQsSUFDeEI7QUFDSSxRQUFNSSxRQUFRLEdBQUcsSUFBSUMsUUFBSixDQUFhTCxNQUFiLENBQWpCOztBQUNBLE9BQUksSUFBSU0sTUFBUixJQUFrQkYsUUFBUSxDQUFDRyxPQUFULEVBQWxCLEVBQ0E7QUFDSSxRQUFHUCxNQUFNLENBQUM1RCxRQUFQLENBQWdCa0UsTUFBTSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJFLElBQTNCLElBQWlDLFVBQWpDLElBQStDUixNQUFNLENBQUM1RCxRQUFQLENBQWdCa0UsTUFBTSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJFLElBQTNCLElBQWlDLE9BQW5GLEVBQ0lSLE1BQU0sQ0FBQzVELFFBQVAsQ0FBZ0JrRSxNQUFNLENBQUMsQ0FBRCxDQUF0QixFQUEyQkcsT0FBM0IsR0FBbUMsS0FBbkMsQ0FESixLQUdJVCxNQUFNLENBQUM1RCxRQUFQLENBQWdCa0UsTUFBTSxDQUFDLENBQUQsQ0FBdEIsRUFBMkIvVixLQUEzQixHQUFpQyxFQUFqQztBQUNQOztBQUNELFNBQU8sSUFBUDtBQUNILENBWE0sQyxDQVlQOztBQUNPLE1BQU1tVyxlQUFlLEdBQUlWLE1BQUQsSUFDL0I7QUFDSTFGLFVBQVEsQ0FBQzBGLE1BQUQsQ0FBUjtBQUNBQSxRQUFNLENBQUN6RixLQUFQLENBQWFDLE9BQWIsR0FBcUIsTUFBckI7QUFDSCxDQUpNLEM7Ozs7Ozs7Ozs7OztBQzlDUDtBQUFBO0FBQUE7QUFBQTtDQUVBOztBQUNPLE1BQU1nRCxZQUFZLEdBQUcsTUFDNUI7QUFDSSxNQUFHekosMkRBQU8sQ0FBQ2tKLFFBQVEsQ0FBQ2pWLE1BQVYsQ0FBVixFQUNJLE9BQU8sS0FBUDtBQUVKLFFBQU0yWSxVQUFVLEdBQUcxRCxRQUFRLENBQUNqVixNQUFULENBQWdCa00sU0FBaEIsQ0FBMEIsQ0FBMUIsRUFBNkIwTSxLQUE3QixDQUFtQyxHQUFuQyxDQUFuQjtBQUNBLE1BQUcsQ0FBQzVDLEtBQUssQ0FBQ0MsT0FBTixDQUFjMEMsVUFBZCxDQUFELElBQThCQSxVQUFVLENBQUMxTSxNQUFYLEtBQW9CLENBQXJELEVBQ0ksT0FBTyxLQUFQO0FBRUosTUFBSTRNLEtBQUo7QUFBQSxNQUFXakQsS0FBSyxHQUFDLEVBQWpCOztBQUNBLE9BQUksSUFBSTlILENBQVIsSUFBYTZLLFVBQWIsRUFDQTtBQUNJRSxTQUFLLEdBQUdGLFVBQVUsQ0FBQzdLLENBQUQsQ0FBVixDQUFjOEssS0FBZCxDQUFvQixHQUFwQixDQUFSO0FBQ0EsUUFBR0MsS0FBSyxDQUFDNU0sTUFBTixLQUFlLENBQWxCLEVBQ0kySixLQUFLLENBQUNpRCxLQUFLLENBQUMsQ0FBRCxDQUFOLENBQUwsR0FBZ0JDLFNBQVMsQ0FBQ0QsS0FBSyxDQUFDLENBQUQsQ0FBTixDQUF6QjtBQUNQOztBQUNELFNBQU9qRCxLQUFQO0FBQ0gsQ0FqQk0sQzs7Ozs7Ozs7Ozs7O0FDSFA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSxNQUFNNUksSUFBSSxHQUFDaFMsa0VBQWMsQ0FBQyxDQUFELENBQXpCOztBQUVBLE1BQU1zVyxjQUFjLEdBQUdsWCwrREFBUSxJQUFpQixHQUFDVyx5REFBbEIsR0FBd0IsVUFBeEIsR0FBbUNpUyxJQUFuQyxHQUF3QyxLQUF6QyxDQUE5Qjs7QUFFQTtBQUVBO0FBQ0E7QUFFTyxNQUFNK0wsaUJBQWlCLEdBQUcsTUFDakM7QUFDSTtBQUNBLFFBQU1DLFNBQVMsR0FBQyxJQUFJOUwsSUFBSixHQUFXK0wsaUJBQVgsS0FBK0IsQ0FBQyxDQUFoRDtBQUNBLE1BQUdELFNBQVMsR0FBR3ZXLGtFQUFaLElBQWlDdVcsU0FBUyxHQUFHeFcsa0VBQWhELEVBQ0ksT0FBTyxDQUFQLENBREosS0FHSSxPQUFPd1csU0FBUDtBQUNQLENBUk0sQyxDQVVQO0FBQ0E7O0FBQ08sTUFBTUUsVUFBVSxHQUFHLENBQUNDLE1BQUQsRUFBU3hHLEtBQVQsRUFBZ0J5RyxVQUFoQixLQUMxQjtBQUNJLFFBQU1DLFdBQVcsR0FDakI7QUFDSWxMLE1BQUUsRUFBRWdMLE1BRFI7QUFFSXhHLFNBQUssRUFBRUEsS0FGWDtBQUdJMkcsWUFBUSxFQUFFRjtBQUhkLEdBREE7QUFNQTFDLHNFQUFVLENBQUMsTUFBRCxFQUFTMkMsV0FBVCxDQUFWO0FBQ0gsQ0FUTSxDLENBV1A7QUFDQTs7QUFDTyxNQUFNRSxnQkFBZ0IsR0FBSTNELEtBQUQsSUFDaEM7QUFDSSxRQUFNNEQsVUFBVSxHQUFDckUsbUVBQVMsQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQUcsQ0FBQ3BKLDJEQUFPLENBQUN5TixVQUFELENBQVgsRUFDQTtBQUNJLFVBQU1DLE1BQU0sR0FBQ3RHLElBQUksQ0FBQ0MsS0FBTCxDQUFXb0csVUFBWCxDQUFiOztBQUNBLFFBQUcsQ0FBQ3pOLDJEQUFPLENBQUMwTixNQUFNLENBQUNILFFBQVIsQ0FBUixJQUE2QixDQUFDdk4sMkRBQU8sQ0FBQzBOLE1BQU0sQ0FBQ0MsZ0JBQVIsQ0FBckMsSUFBa0UsQ0FBQzNOLDJEQUFPLENBQUMwTixNQUFNLENBQUNFLFdBQVIsQ0FBMUUsS0FBbUcsQ0FBQzVOLDJEQUFPLENBQUMwTixNQUFNLENBQUNHLGVBQVIsQ0FBUixJQUFvQyxDQUFDN04sMkRBQU8sQ0FBQzBOLE1BQU0sQ0FBQ0ksT0FBUixDQUEvSSxDQUFILEVBQ0E7QUFDSWpFLFdBQUssQ0FBQzBELFFBQU4sR0FBZUcsTUFBTSxDQUFDSCxRQUF0QjtBQUNBMUQsV0FBSyxDQUFDOEQsZ0JBQU4sR0FBdUJELE1BQU0sQ0FBQ0MsZ0JBQTlCO0FBQ0E5RCxXQUFLLENBQUMrRCxXQUFOLEdBQWtCRixNQUFNLENBQUNFLFdBQXpCO0FBQ0EsVUFBRyxDQUFDNU4sMkRBQU8sQ0FBQzBOLE1BQU0sQ0FBQ0csZUFBUixDQUFYLEVBQ0loRSxLQUFLLENBQUNnRSxlQUFOLEdBQXNCSCxNQUFNLENBQUNHLGVBQTdCLENBREosS0FHSWhFLEtBQUssQ0FBQ2lFLE9BQU4sR0FBY0osTUFBTSxDQUFDSSxPQUFyQjtBQUNQO0FBQ0o7O0FBQ0QsU0FBT2pFLEtBQVA7QUFDSCxDQWxCTSxDLENBb0JQO0FBQ0E7O0FBQ08sTUFBTWYsWUFBWSxHQUFHLE9BQU92QixNQUFNLEdBQUMsRUFBZCxFQUFrQndHLGNBQWxCLEVBQWtDaEYsT0FBbEMsRUFBMkNpRixTQUEzQyxLQUM1QjtBQUNJLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUNuQjtBQUNJLFVBQU1DLFNBQVMsR0FBQ2hGLG1FQUFTLENBQUMsTUFBRCxDQUF6Qjs7QUFDQSxRQUFHcEosMkRBQU8sQ0FBQ29PLFNBQUQsQ0FBVixFQUNBO0FBQ0lDLGtCQUFZLENBQUNOLGNBQUQsRUFBaUJoRixPQUFqQixFQUEwQmlGLFNBQTFCLENBQVo7QUFDQUUsYUFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNILEtBSkQsTUFNQTtBQUNJLFlBQU0vRSxJQUFJLEdBQUMvQixJQUFJLENBQUNDLEtBQUwsQ0FBVytHLFNBQVgsQ0FBWDs7QUFDQSxVQUFHcE8sMkRBQU8sQ0FBQ21KLElBQUksQ0FBQy9HLEVBQU4sQ0FBUCxJQUFvQnBDLDJEQUFPLENBQUNtSixJQUFJLENBQUN2QyxLQUFOLENBQTNCLElBQTJDNUcsMkRBQU8sQ0FBQ21KLElBQUksQ0FBQ29FLFFBQU4sQ0FBbEQsSUFBcUVwRSxJQUFJLENBQUNvRSxRQUFMLEdBQWdCcE0sSUFBSSxDQUFDbU4sR0FBTCxFQUF4RixFQUNBO0FBQ0loRiw4RUFBWSxDQUFDLE1BQUQsQ0FBWjtBQUNBK0Usb0JBQVksQ0FBQ04sY0FBRCxFQUFpQmhGLE9BQWpCLEVBQTBCaUYsU0FBMUIsQ0FBWjtBQUNBRSxlQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0gsT0FMRCxNQU9BO0FBQ0ksY0FBTUssR0FBRyxHQUFHLElBQUl6SCxjQUFKLEVBQVo7QUFDQXlILFdBQUcsQ0FBQ3hILElBQUosQ0FBUyxLQUFULEVBQWdCdFksMERBQU0sR0FBQ3FHLDJEQUFQLEdBQWtCRyxnRUFBbEIsR0FBa0NrVSxJQUFJLENBQUN2QyxLQUF2RDs7QUFDQTJILFdBQUcsQ0FBQ0MsTUFBSixHQUFhLE1BQ2I7QUFDSSxjQUFJckgsUUFBUSxHQUFDQyxJQUFJLENBQUNDLEtBQUwsQ0FBV2tILEdBQUcsQ0FBQ2pILFlBQWYsQ0FBYjs7QUFDQSxjQUFJaUgsR0FBRyxDQUFDaEgsTUFBSixLQUFlLEdBQWYsSUFBc0JKLFFBQVEsQ0FBQ3NILE9BQS9CLElBQTBDdEgsUUFBUSxDQUFDL0UsRUFBVCxJQUFldkMsU0FBN0QsRUFDQTtBQUNJLGdCQUFHc0gsUUFBUSxDQUFDL0UsRUFBVCxLQUFjK0csSUFBSSxDQUFDL0csRUFBdEIsRUFDQTtBQUNJK0csa0JBQUksQ0FBQ2hULElBQUwsR0FBVWdSLFFBQVEsQ0FBQ2hSLElBQW5CO0FBQ0FnVCxrQkFBSSxDQUFDdUYsUUFBTCxHQUFjdkgsUUFBUSxDQUFDdUgsUUFBdkI7QUFDQXZGLGtCQUFJLENBQUN3RixjQUFMLEdBQW9CeEgsUUFBUSxDQUFDd0gsY0FBN0I7QUFDQXhGLGtCQUFJLENBQUM1QixNQUFMLEdBQVlKLFFBQVEsQ0FBQ0ksTUFBckIsQ0FKSixDQUlnQzs7QUFDNUJvRCxrRkFBVSxDQUFDLE1BQUQsRUFBU3hCLElBQVQsQ0FBVixDQUxKLENBTUk7O0FBQ0Esa0JBQUdoQyxRQUFRLENBQUNJLE1BQVQsS0FBa0IsTUFBbEIsSUFBNEJKLFFBQVEsQ0FBQ3lILFFBQVQsSUFBcUIsQ0FBcEQsRUFDQTtBQUNJLHNCQUFNQyxVQUFVLEdBQUNuZ0IsMkRBQU8sR0FBQyxHQUFSLEdBQVk2VyxjQUFjLENBQUMxQyxXQUE1QztBQUNBLG9CQUFHb0csTUFBTSxDQUFDQyxRQUFQLENBQWdCL0csSUFBaEIsQ0FBcUIyTSxPQUFyQixDQUE2QkQsVUFBN0IsTUFBMkMsQ0FBQyxDQUEvQyxFQUNJNUYsTUFBTSxDQUFDQyxRQUFQLENBQWdCNkYsTUFBaEIsQ0FBdUIsTUFBSXhKLGNBQWMsQ0FBQzFDLFdBQW5CLEdBQStCLFlBQXRELEVBSFIsQ0FHNEU7O0FBQ3hFcUwsdUJBQU8sQ0FBQyxJQUFELENBQVA7QUFDSCxlQU5ELE1BUUE7QUFDSSxvQkFBRzNHLE1BQU0sQ0FBQ3JILE1BQVAsS0FBZ0IsQ0FBaEIsSUFBcUJxSCxNQUFNLENBQUN1SCxPQUFQLENBQWUzSCxRQUFRLENBQUNJLE1BQXhCLE1BQWtDLENBQUMsQ0FBM0QsRUFDQTtBQUNJOEcsOEJBQVksQ0FBQ04sY0FBRCxFQUFpQmhGLE9BQWpCLEVBQTBCaUYsU0FBMUIsQ0FBWjtBQUNBRSx5QkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNILGlCQUpELE1BTUlBLE9BQU8sQ0FBQyxJQUFELENBQVA7QUFDUDtBQUNKLGFBekJELE1BMkJBO0FBQ0k1RSxvRkFBWSxDQUFDLE1BQUQsQ0FBWjtBQUNBK0UsMEJBQVksQ0FBQ04sY0FBRCxFQUFpQmhGLE9BQWpCLEVBQTBCaUYsU0FBMUIsQ0FBWjtBQUNBRSxxQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osV0FsQ0QsTUFvQ0E7QUFDSTVFLGtGQUFZLENBQUMsTUFBRCxDQUFaO0FBQ0ErRSx3QkFBWSxDQUFDTixjQUFELEVBQWlCaEYsT0FBakIsRUFBMEJpRixTQUExQixDQUFaO0FBQ0FFLG1CQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixTQTVDRDs7QUE2Q0FLLFdBQUcsQ0FBQ1MsT0FBSixHQUFjLE1BQU1iLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDVSxVQUFMLENBQTFCOztBQUNBVixXQUFHLENBQUM1RixJQUFKO0FBQ0g7QUFDSjtBQUNKLEdBdEVNLENBQVA7QUF1RUgsQ0F6RU0sQyxDQTBFUDs7QUFDQSxNQUFNMEYsWUFBWSxHQUFHLENBQUNOLGNBQUQsRUFBaUJoRixPQUFqQixFQUEwQmlGLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDaE8sMkRBQU8sQ0FBQytJLE9BQUQsQ0FBWCxFQUNJNEIsb0VBQVUsQ0FBQyxTQUFELEVBQVk1QixPQUFaLENBQVY7QUFDSixNQUFHLENBQUMvSSwyREFBTyxDQUFDZ08sU0FBRCxDQUFYLEVBQ0lyRCxvRUFBVSxDQUFDLEtBQUQsRUFBUXFELFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQ2hPLDJEQUFPLENBQUMrTixjQUFELENBQVgsRUFDSTlFLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQjZGLE1BQWhCLENBQXVCaEIsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9tYW5hZ2VHcm91cHMuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbWFuYWdlR3JvdXBzLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9ncm91cFwiOiBcIi4uL2xhbmcvZnIvZ3JvdXAuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9ncm91cCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvdXNlclwiOiBcIi4uL2xhbmcvZnIvdXNlci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3VzZXIkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGJ0blNlbmRSZXNwb25zZTogXCJUZXN0ZXogdm9zIHLDqXBvbnNlcy5cIixcbiAgICBidG5TaGFyZVF1aXpUeHQ6IFwiUGFydGFnZXIgY2UgcXVpeiBzdXIgXCIsICAgXG4gICAgY29tbW9uSW50cm9UeHQ6IFwiQ2UgcXVpeiB2b3VzIHBlcm1ldCB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGVzIGFydGljbGVzIHF1aSB2b3VzIG9udCDDqXTDqSBwcm9wb3PDqXMgcHLDqWPDqWRlbW1lbnQgw6AgbGEgbGVjdHVyZS4gQXUgYmVzb2luLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cyBwb3VyIGxlcyAocmUpbGlyZS5cIixcbiAgICBjb3JyZWN0QW5zd2VyVHh0OiBcIkJvbm5lIHLDqXBvbnNlXCIsICAgIFxuICAgIGdyb3Vwc05hbWU6IFwiUXVpelwiLC8vIG5vbSBkJ3VuIGdyb3VwZSBwb3VyIGwnYWZmaWNoYWdlIGRhbnMgbGVzIHZ1ZXNcbiAgICBncm91cFF1ZXN0aW9ubmFpcmVzTGlzdCA6IFwiTGVzICNOQiDDqWzDqW1lbnRzIGVucmVnaXN0csOpcyBwb3VyIGNlIGdyb3VwZVwiLFxuICAgIGdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0V2l0aG91dCA6IFwiQXVjdW4gw6lsw6ltZW50IG4nYSDDqXTDqSBlbnJlZ2lzdHLDqSBwb3VyIGNlIGdyb3VwZS5cIiwgIFxuICAgIGhhdmVCZWVuUHVibGlzaGVkOiBcIiNOQiBub3V2ZWF1eCBncm91cGVzIGRlIHF1aXpzIG9udCDDqXTDqSBwdWJsacOpcy5cIixcbiAgICBpbmZvc0dyb3VwRm9yQWRtaW46IFwiQ2UgZ3JvdXBlIGRlIHF1aXpzIGEgw6l0w6kgY3LDqcOpIGxlIERBVEVfQ1JFQSwgbWlzZSDDoCBqb3VyIGxhIGRlcm5pw6hyZSBmb2lzIGxlIERBVEVfVVBEQVRFLjxicj5Tb24gaWRlbnRpZmlhbnQgZXN0IDxiPkdST1VQX0lEPC9iPi4gSWwgcmVncm91cGUgYWN0dWVsbGVtZW50IGxlcyBxdWVzdGlvbnMgZGUgTkJfRUxFTUVOVFMgcXVpenMuXCIsXG4gICAgbGlua0ZpcnN0RWxlbWVudEdyb3VwOiBcIlJldG91ciBhdSBwcmVtaWVyIGFydGljbGUuXCIsXG4gICAgbGFzdFVwZGF0ZWQ6IFwiRGVybmnDqHJlIG1pc2Ugw6Agam91ciBsZSBcIiwgICAgXG4gICAgbmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZTogXCJMYSBkYXRlIGRlIHB1YmxpY2F0aW9uIGZvdXJuaWUgbidhIHBhcyB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5lZWRMYW5ndWFnZTogXCJWb3VzIGRldmV6IHPDqWxlY3Rpb25uZXIgbGEgbGFuZ3VlIGRlIGNlIGdyb3VwZSBkZSBxdWl6cy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ1RpdGxlOiBcIkxlIHRpdHJlIGR1IGdyb3VwZSBkZSBxdWl6cyBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLCAgICAgICAgICAgICAgICAgXG4gICAgbmVlZFRpdGxlOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGl0cmUgw6AgY2UgZ3JvdXBlIGRlIHF1aXpzLlwiLFxuICAgIG5lZWRVbmlxdWVVcmw6IFwiTCd1cmwgZHUgZ3JvdXBlIGRlIHF1aXpzIGRvaXQgw6p0cmUgdW5pcXVlLlwiLFxuICAgIG5lZWRVcmw6IFwiTWVyY2kgZGUgZm91cm5pciBsJ3VybCDDoCBjZSBncm91cGUgZGUgcXVpenMuXCIsXG4gICAgbm90Rm91bmQ6IFwiTGUgZ3JvdXBlIGRlIHF1aXpzICgjU0VBUkNIKSBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgcHVibGlzaGVkQXQ6IFwiIGxlXCIsXG4gICAgcHVibGlzaGVkQnk6IFwiUXVpeiBwdWJsacOpIHBhclwiLFxuICAgIHNlYXJjaElzTm90TG9uZ0Vub3VnaDogXCJWb3VzIGRldmV6IHNhaXNpciBhdSBtb2lucyAjTUlOIGNhcmFjdMOocmVzIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiLFxuICAgIHNlYXJjaFdpdGhvdXRSZXN1bHQ6IFwiQXVjdW4gZ3JvdXBlIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgdm90cmUgcmVjaGVyY2hlLlwiLFxuICAgIHdyb25nQW5zd2VyVHh0OiBcIk1hdXZhaXNlIHLDqXBvbnNlXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBEVSBGT1JNVUxBSVJFIFBFUk1FVFRBTlQgREUgU0FJU0lSIC8gw4lESVRFUiBMRVMgSU5GT1MgREVTIEdST1VQRVMgREUgUVVJWlNcblxuLy8vIFbDqXJpZmllIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlIHZlcnMgbGUgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIHNpIGNlIG4nZXN0IHBhcyBsZSBjYXMuXG4vLy8gU2kgYydlc3Qgb2ssIHByb3Bvc2UgdW4gbW90ZXVyIGRlIHJlY2hlcmNoZSBwZXJtZXR0YW50IGRlIGNoZXJjaGVyIHVuIGdyb3VwZS5cbi8vLyBTaSB1biBpZCBlc3QgcGFzc8OpIHBhciBsJ3VybCBvbiBhZmZpY2hlIGxlcyBpbmZvcm1hdGlvbnMgZHUgZ3JvdXBlIGRhbnMgdW4gZm9ybXVsYWlyZSBwZXJtZXR0YW50IGRlIGwnw6lkaXRlci9zdXBwcmltZXIuXG4vLy8gU2kgcGFzIGQnaWQgcGFzc8OpIHBhciBsJ3VybCwgb24gYWZmaWNoZSB1biBmb3JtdWxhaXJlIHZpZGUgcGVybWV0dGFudCBkJ2VuIHNhaXNpciB1biBub3V2ZWF1LlxuXG4vLyBGaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1F1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy9xdWVzdGlvbm5haXJlcy5qc1wiKTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG4vLyBGb25jdGlvbnMgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBlbXB5Rm9ybSwgZ2V0RGF0YXNGcm9tSW5wdXRzLCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdCwgaXNFbXB0eSwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi90b29scy9tYWluXCI7XG5pbXBvcnQgeyBnZXRVcmxQYXJhbXMgfSBmcm9tIFwiLi90b29scy91cmwuanNcIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBhZGRPa01lc3NhZ2UsIHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0LCBncm91cFF1ZXN0aW9ubmFpcmVzTGlzdFdpdGhvdXQsIGluZm9zR3JvdXBGb3JBZG1pbiwgc2VhcmNoV2l0aG91dFJlc3VsdCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9ncm91cFwiKTtcbmNvbnN0IHsgbmVlZEJlQ29ubmVjdGVkIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBidG5OZXdHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2FudE5ld0dyb3VwXCIpO1xuY29uc3QgYnRuUHJldmlld0dyb3VwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwcmV2aWV3R3JvdXBcIik7XG5jb25zdCBkZWxldGVDaGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGVsZXRlT2tMYWJlbFwiKTtcbmNvbnN0IGRpdkNyYXNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdkdyb3VwSW50cm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdyb3VwSW50cm9cIik7XG5jb25zdCBkaXZNYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UXVlc3Rpb25uYWlyZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzTGlzdFwiKTtcbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGRpdlNlYXJjaFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoUmVzdWx0XCIpO1xuY29uc3QgZm9ybUdyb3VwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJncm91cHNcIik7XG5jb25zdCBmb3JtU2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hcIik7XG5cbi8vIEZvbmN0aW9uIHV0aWxlIHBvdXIgdmlkZXIgbGUgZm9ybXVsYWlyZSwgeSBjb21wcmlzIGxlcyBjaGFtcHMgaGlkZGVuLCBldGMuXG5jb25zdCBlbXB0eUdyb3VwRm9ybSA9ICgpID0+XG57XG4gICAgZW1weUZvcm0oZm9ybUdyb3VwKTtcbiAgICAvLyBDYXNlIGRlIHN1cHByZXNzaW9uIGV0IGJvdXRvbiB2aXN1YWxpc2F0aW9uIGludXRpbGVzIGVuIG1vZGUgY3LDqWF0aW9uIDpcbiAgICBkZWxldGVDaGVja0JveC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgIGJ0blByZXZpZXdHcm91cC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOyAgIFxuICAgIC8vIEludHJvIMOgIHZpZGVyICFcbiAgICBkaXZHcm91cEludHJvLmlubmVySFRNTD1cIlwiO1xufVxuXG4vLyBGb25jdGlvbiBhZmZpY2hhbnQgbGVzIGluZm9zIGNvbm51ZXMgY29uY2VybmFudCB1biBncm91cGUuXG5jb25zdCBzaG93Rm9ybUdyb3VwSW5mb3MgPSAoaWQsIHRva2VuKSA9Plxue1xuICAgIC8vIG9uIGNvbW1lbmNlIHBhciB0b3V0IHZpZGVyLCBkZXMgZm9pcyBxdWUuLi4gOlxuICAgIGVtcHR5R3JvdXBGb3JtKCk7XG4gICAgY29uc3QgeGhyR2V0SW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHJHZXRJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5nZXRHcm91cFJvdXRlK2lkKTtcbiAgICB4aHJHZXRJbmZvcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLkdyb3VwICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXBUZXh0ID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEdST1VQX0lEIDogcmVzcG9uc2UuR3JvdXAuaWQsXG4gICAgICAgICAgICAgICAgICAgIERBVEVfQ1JFQSA6IGRhdGVGb3JtYXQocmVzcG9uc2UuR3JvdXAuY3JlYXRlZEF0KSxcbiAgICAgICAgICAgICAgICAgICAgREFURV9VUERBVEUgOiBkYXRlRm9ybWF0KHJlc3BvbnNlLkdyb3VwLnVwZGF0ZWRBdCksXG4gICAgICAgICAgICAgICAgICAgIE5CX0VMRU1FTlRTIDogKHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzIT09dW5kZWZpbmVkKSA/IHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzLmxlbmd0aCA6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwSW50cm89cmVwbGFjZUFsbChpbmZvc0dyb3VwRm9yQWRtaW4sIG1hcFRleHQpO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2R3JvdXBJbnRybywgXCJwXCIsIGdyb3VwSW50cm8sIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgZGF0YSBpbiByZXNwb25zZS5Hcm91cClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGZvcm1Hcm91cC5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YT09PVwicHVibGlzaGluZ0F0XCIgJiYgcmVzcG9uc2UuR3JvdXBbZGF0YV0hPT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5lbGVtZW50c1tkYXRhXS52YWx1ZT1kYXRlRm9ybWF0KHJlc3BvbnNlLkdyb3VwW2RhdGFdLCBcImZvcm1cIik7Ly8gISEgZm9ybWF0IHBvdXZhbnQgcG9zZXIgc291Y2lzIHNpIG5hdmlnYXRldXIgbmUgZ8OocmUgcGFzIGxlcyBjaGFtcHMgZGUgdHlwZSBcImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmVsZW1lbnRzW2RhdGFdLnZhbHVlPXJlc3BvbnNlLkdyb3VwW2RhdGFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZUNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgIGJ0blByZXZpZXdHcm91cC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5Hcm91cFtcImlzUHVibGlzaGFibGVcIl0gPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBidG5QcmV2aWV3R3JvdXAuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ3JvdXBSb3V0ZXMrY29uZmlnUXVlc3Rpb25uYWlyZXMucHJldmlld0dyb3VwUm91dGVzK1wiL1wiK2lkK1wiL1wiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJ0blByZXZpZXdHcm91cC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHNpdGVVcmwrXCIvXCIrY29uZmlnUXVlc3Rpb25uYWlyZXMuZGlyV2ViR3JvdXBzK1wiL1wiK3Jlc3BvbnNlLkdyb3VwW1wic2x1Z1wiXStcIi5odG1sXCIpO1xuICAgICAgICAgICAgICAgIC8vIGFmZmljaGFnZSBkZXMgw6lsw6ltZW50cyBkdSBncm91cGUgOlxuICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzICE9PSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuUXVlc3Rpb25uYWlyZXMubGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3RIVE1MPVwiXCIsIG9wdGlvbnNEYXlTdHIgPSB7IHdlZWtkYXk6ICdsb25nJ307XG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZS5RdWVzdGlvbm5haXJlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RIVE1MKz1cIjxsaT48YSBocmVmPSdcIitjb25maWdUZW1wbGF0ZS5xdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlK1wiP2lkPVwiK3Jlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzW2ldLlF1ZXN0aW9ubmFpcmUuaWQrXCInIGlkPSdxdWVzdGlvbm5haXJlX1wiK3Jlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzW2ldLlF1ZXN0aW9ubmFpcmUuaWQrXCInPlwiK3Jlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzW2ldLlF1ZXN0aW9ubmFpcmUudGl0bGUrXCI8L2E+PC9saT5cIjtcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuUXVlc3Rpb25uYWlyZXMubGVuZ3RoIT09MClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25uYWlyZXMsIFwiaDNcIiwgZ3JvdXBRdWVzdGlvbm5haXJlc0xpc3QucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5RdWVzdGlvbm5haXJlcy5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZRdWVzdGlvbm5haXJlcywgXCJoM1wiLCBncm91cFF1ZXN0aW9ubmFpcmVzTGlzdFdpdGhvdXQpOyAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25uYWlyZXMsIFwidWxcIiwgbGlzdEhUTUwsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyR2V0SW5mb3Muc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdG9rZW4pO1xuICAgIHhockdldEluZm9zLnNlbmQoKTtcbn1cblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1wibWFuYWdlclwiLCBcImFkbWluXCJdLCBcIi9cIitjb25maWdUZW1wbGF0ZS5jb25uZWN0aW9uUGFnZSwgeyBtZXNzYWdlOiBuZWVkQmVDb25uZWN0ZWQsIGNvbG9yOlwiZXJyb3JcIiB9LCB3aW5kb3cubG9jYXRpb24pO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlQWNjb3VudExpbmsodXNlci5zdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKTsvLyBsaWVuIFwiQ29tcHRlXCIgbWVudSBoZWFkZXIgdGVtcGxhdGVcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNhdGlvbiBkZXMgZm9ybXVsYWlyZXMgOlxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1F1ZXN0aW9ubmFpcmVzLCBmb3JtU2VhcmNoKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdRdWVzdGlvbm5haXJlcy5Hcm91cCwgZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIGVtcHR5R3JvdXBGb3JtKCk7XG4gICAgICAgICAgICAvLyBTaSB1biBpZCBlc3QgcGFzc8OpIHBhciBsJ3VybCwgb24gZXNzYXllIGQnYWZmaWNoZXIgbGVzIGluZm9zIDpcbiAgICAgICAgICAgIGxldCB1cmxEYXRhcz1nZXRVcmxQYXJhbXMoKTtcbiAgICAgICAgICAgIGlmKHVybERhdGFzICYmIHVybERhdGFzLmlkIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHNob3dGb3JtR3JvdXBJbmZvcyh1cmxEYXRhcy5pZCwgdXNlci50b2tlbik7XG4gICAgICAgICAgICAvLyBCZXNvaW4gZCd1biBjb3VwIGRlIEvDpHJjaGVyID8gXG4gICAgICAgICAgICBidG5OZXdHcm91cC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbXB0eUdyb3VwRm9ybSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBFbnZvaSBkdSBmb3JtdWxhaXJlIHByaW5jaXBhbCA6XG4gICAgICAgICAgICBmb3JtR3JvdXAuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyR3JvdXBEYXRhcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSAmJiAoZGF0YXMuZGVsZXRlT2sgIT09IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMub3BlbihcIkRFTEVURVwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ3JvdXBSb3V0ZXMrXCIvXCIrZGF0YXMuaWQpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYoIWlzRW1wdHkoZGF0YXMuaWQpKVxuICAgICAgICAgICAgICAgICAgICB4aHJHcm91cERhdGFzLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdyb3VwUm91dGVzK1wiL1wiK2RhdGFzLmlkKTsvLyBtaXNlIMOgIGpvdXJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdyb3VwUm91dGVzKTsvLyBub3V2ZWwgZW5yZWdpc3RyZW1lbnRcbiAgICAgICAgICAgICAgICB4aHJHcm91cERhdGFzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKSAvLyBub3V2ZWwgZW5yZWdpc3RyZW1lbnQgY3LDqcOpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGFkZE9rTWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXMuaWQ9cmVzcG9uc2UuaWQ7IC8vIHV0aWxlIHBvdXIgcsOpYWZmaWNoYWdlICsgYmFzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLm1lc3NhZ2UgIT0gdW5kZWZpbmVkKSAvLyBtaXNlIMOgIGpvdXIgb3Ugc3VwcHJlc3Npb24gb2tcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzRW1wdHkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhcy5kZWxldGVPayA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm9ybUdyb3VwSW5mb3MoZGF0YXMuaWQsIHVzZXIudG9rZW4pOy8vIGFjdHVhbGlzYXRpb24gZGUgbCdhZmZpY2hhZ2UgYXByw6hzIHRyYWl0ZW1lbnQgc2VydmV1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlHcm91cEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHJHcm91cERhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEVudm9pIGQndW5lIHJlY2hlcmNoZVxuICAgICAgICAgICAgZm9ybVNlYXJjaC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyU2VhcmNoID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5zZWFyY2hHcm91cHNSb3V0ZSk7XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHNlYXJjaFdpdGhvdXRSZXN1bHQsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RIVE1MPVwiPG9wdGlvbiB2YWx1ZT0nJz48L29wdGlvbj5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0SFRNTCs9XCI8b3B0aW9uIHZhbHVlPSdcIityZXNwb25zZVtpXS5pZCtcIic+XCIrcmVzcG9uc2VbaV0udGl0bGUrXCI8L29wdGlvbj5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTZWFyY2hSZXN1bHQsIFwic2VsZWN0XCIsIHNlbGVjdEhUTUwsIFwic2VsZWN0U2VhcmNoXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hTZWxlY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNlbGVjdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2VhcmNoU2VsZWN0LnZhbHVlICE9PSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtR3JvdXBJbmZvcyhzZWFyY2hTZWxlY3QudmFsdWUsIHVzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIGlmKGRhdGFzKVxuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2Q3Jhc2gsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTtcbmhlbGxvRGV2KCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIHLDqWN1cMOpcmFudCBsZXMgcGFyYW3DqHRyZXMgcGFzc8OpcyBwYXIgbCd1cmxcbmV4cG9ydCBjb25zdCBnZXRVcmxQYXJhbXMgPSAoKSA9Plxue1xuICAgIGlmKGlzRW1wdHkobG9jYXRpb24uc2VhcmNoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoXCImXCIpO1xuICAgIGlmKCFBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpIHx8IHBhcmFtZXRlcnMubGVuZ3RoPT09MClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBcbiAgICBsZXQgcGFyYW0sIGRhdGFzPXt9O1xuICAgIGZvcihsZXQgaSBpbiBwYXJhbWV0ZXJzKVxuICAgIHtcbiAgICAgICAgcGFyYW0gPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgaWYocGFyYW0ubGVuZ3RoPT09MilcbiAgICAgICAgICAgIGRhdGFzW3BhcmFtWzBdXT1kZWNvZGVVUkkocGFyYW1bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL2dyb3VwJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ3JvdXAuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9tYW5hZ2VHcm91cHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYnRuU2VuZFJlc3BvbnNlIiwiYnRuU2hhcmVRdWl6VHh0IiwiY29tbW9uSW50cm9UeHQiLCJjb3JyZWN0QW5zd2VyVHh0IiwiZ3JvdXBzTmFtZSIsImdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0IiwiZ3JvdXBRdWVzdGlvbm5haXJlc0xpc3RXaXRob3V0IiwiaGF2ZUJlZW5QdWJsaXNoZWQiLCJpbmZvc0dyb3VwRm9yQWRtaW4iLCJsaW5rRmlyc3RFbGVtZW50R3JvdXAiLCJsYXN0VXBkYXRlZCIsIm5lZWRDb3JyZWN0UHVibGlzaGluZ0RhdGUiLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTm90VG9vTG9uZ1RpdGxlIiwibmVlZFRpdGxlIiwibmVlZFVuaXF1ZVVybCIsIm5lZWRVcmwiLCJub3RGb3VuZCIsInB1Ymxpc2hlZEF0IiwicHVibGlzaGVkQnkiLCJzZWFyY2hJc05vdExvbmdFbm91Z2giLCJzZWFyY2hXaXRob3V0UmVzdWx0Iiwid3JvbmdBbnN3ZXJUeHQiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1F1ZXN0aW9ubmFpcmVzIiwiY29uZmlnVGVtcGxhdGUiLCJidG5OZXdHcm91cCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJidG5QcmV2aWV3R3JvdXAiLCJkZWxldGVDaGVja0JveCIsImRpdkNyYXNoIiwiZGl2R3JvdXBJbnRybyIsImRpdk1haW4iLCJkaXZNZXNzYWdlIiwiZGl2UXVlc3Rpb25uYWlyZXMiLCJkaXZSZXNwb25zZSIsImRpdlNlYXJjaFJlc3VsdCIsImZvcm1Hcm91cCIsImZvcm1TZWFyY2giLCJlbXB0eUdyb3VwRm9ybSIsImVtcHlGb3JtIiwic3R5bGUiLCJkaXNwbGF5IiwiaW5uZXJIVE1MIiwic2hvd0Zvcm1Hcm91cEluZm9zIiwidG9rZW4iLCJ4aHJHZXRJbmZvcyIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzdGF0dXMiLCJtYXBUZXh0IiwiR1JPVVBfSUQiLCJEQVRFX0NSRUEiLCJjcmVhdGVkQXQiLCJEQVRFX1VQREFURSIsInVwZGF0ZWRBdCIsIk5CX0VMRU1FTlRTIiwiUXVlc3Rpb25uYWlyZXMiLCJncm91cEludHJvIiwiYWRkRWxlbWVudCIsImRhdGEiLCJlbGVtZW50cyIsInNldEF0dHJpYnV0ZSIsImxpc3RIVE1MIiwib3B0aW9uc0RheVN0ciIsIndlZWtkYXkiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsIm1lc3NhZ2UiLCJjb2xvciIsIndpbmRvdyIsImxvY2F0aW9uIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwicmVtb3ZlTG9jYWx5Iiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwidXJsRGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJHcm91cERhdGFzIiwiZGVsZXRlT2siLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvcnMiLCJzdHJpbmdpZnkiLCJ4aHJTZWFyY2giLCJzZWxlY3RIVE1MIiwic2VhcmNoU2VsZWN0IiwiY29uc29sZSIsImVycm9yIiwiaGVsbG9EZXYiLCJzYXZlTG9jYWx5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwicGFyYW1ldGVycyIsInNwbGl0IiwicGFyYW0iLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm5vdyIsInhociIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdD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QUFRcUQsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDeE8sMkRBQU8sQ0FBQ3VPLGNBQUQsQ0FBWCxFQUNJOUUsTUFBTSxDQUFDQyxRQUFQLENBQWdCNkYsTUFBaEIsQ0FBdUJoQixjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL21hbmFnZUdyb3Vwcy5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9tYW5hZ2VHcm91cHMuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dyb3VwXCI6IFwiLi4vbGFuZy9mci9ncm91cC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dyb3VwJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYnRuU2VuZFJlc3BvbnNlOiBcIlRlc3RleiB2b3MgcsOpcG9uc2VzLlwiLFxuICAgIGJ0blNoYXJlUXVpelR4dDogXCJQYXJ0YWdlciBjZSBxdWl6IHN1ciBcIiwgICBcbiAgICBjb21tb25JbnRyb1R4dDogXCJDZSBxdWl6IHZvdXMgcGVybWV0IHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZXMgYXJ0aWNsZXMgcXVpIHZvdXMgb250IMOpdMOpIHByb3Bvc8OpcyBwcsOpY8OpZGVtbWVudCDDoCBsYSBsZWN0dXJlLiBBdSBiZXNvaW4sIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzIHBvdXIgbGVzIChyZSlsaXJlLlwiLFxuICAgIGNvcnJlY3RBbnN3ZXJUeHQ6IFwiQm9ubmUgcsOpcG9uc2VcIiwgICAgXG4gICAgZ3JvdXBzTmFtZTogXCJRdWl6XCIsLy8gbm9tIGQndW4gZ3JvdXBlIHBvdXIgbCdhZmZpY2hhZ2UgZGFucyBsZXMgdnVlc1xuICAgIGdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0IDogXCJMZXMgI05CIMOpbMOpbWVudHMgZW5yZWdpc3Ryw6lzIHBvdXIgY2UgZ3JvdXBlXCIsXG4gICAgZ3JvdXBRdWVzdGlvbm5haXJlc0xpc3RXaXRob3V0IDogXCJBdWN1biDDqWzDqW1lbnQgbidhIMOpdMOpIGVucmVnaXN0csOpIHBvdXIgY2UgZ3JvdXBlLlwiLCAgXG4gICAgaGF2ZUJlZW5QdWJsaXNoZWQ6IFwiI05CIG5vdXZlYXV4IGdyb3VwZXMgZGUgcXVpenMgb250IMOpdMOpIHB1Ymxpw6lzLlwiLFxuICAgIGluZm9zR3JvdXBGb3JBZG1pbjogXCJDZSBncm91cGUgZGUgcXVpenMgYSDDqXTDqSBjcsOpw6kgbGUgREFURV9DUkVBLCBtaXNlIMOgIGpvdXIgbGEgZGVybmnDqHJlIGZvaXMgbGUgREFURV9VUERBVEUuPGJyPlNvbiBpZGVudGlmaWFudCBlc3QgPGI+R1JPVVBfSUQ8L2I+LiBJbCByZWdyb3VwZSBhY3R1ZWxsZW1lbnQgbGVzIHF1ZXN0aW9ucyBkZSBOQl9FTEVNRU5UUyBxdWl6cy5cIixcbiAgICBsaW5rRmlyc3RFbGVtZW50R3JvdXA6IFwiUmV0b3VyIGF1IHByZW1pZXIgYXJ0aWNsZS5cIixcbiAgICBsYXN0VXBkYXRlZDogXCJEZXJuacOocmUgbWlzZSDDoCBqb3VyIGxlIFwiLCAgICBcbiAgICBuZWVkQ29ycmVjdFB1Ymxpc2hpbmdEYXRlOiBcIkxhIGRhdGUgZGUgcHVibGljYXRpb24gZm91cm5pZSBuJ2EgcGFzIHVuIGZvcm1hdCB2YWxpZGUuXCIsXG4gICAgbmVlZExhbmd1YWdlOiBcIlZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBsYSBsYW5ndWUgZGUgY2UgZ3JvdXBlIGRlIHF1aXpzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nVGl0bGU6IFwiTGUgdGl0cmUgZHUgZ3JvdXBlIGRlIHF1aXpzIG5lIGRvaXQgcGFzIGNvbXB0ZXIgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsICAgICAgICAgICAgICAgICBcbiAgICBuZWVkVGl0bGU6IFwiTWVyY2kgZGUgZm91cm5pciB1biB0aXRyZSDDoCBjZSBncm91cGUgZGUgcXVpenMuXCIsXG4gICAgbmVlZFVuaXF1ZVVybDogXCJMJ3VybCBkdSBncm91cGUgZGUgcXVpenMgZG9pdCDDqnRyZSB1bmlxdWUuXCIsXG4gICAgbmVlZFVybDogXCJNZXJjaSBkZSBmb3VybmlyIGwndXJsIMOgIGNlIGdyb3VwZSBkZSBxdWl6cy5cIixcbiAgICBub3RGb3VuZDogXCJMZSBncm91cGUgZGUgcXVpenMgKCNTRUFSQ0gpIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICBwdWJsaXNoZWRBdDogXCIgbGVcIixcbiAgICBwdWJsaXNoZWRCeTogXCJRdWl6IHB1Ymxpw6kgcGFyXCIsXG4gICAgc2VhcmNoSXNOb3RMb25nRW5vdWdoOiBcIlZvdXMgZGV2ZXogc2Fpc2lyIGF1IG1vaW5zICNNSU4gY2FyYWN0w6hyZXMgcG91ciB2b3RyZSByZWNoZXJjaGUuXCIsXG4gICAgc2VhcmNoV2l0aG91dFJlc3VsdDogXCJBdWN1biBncm91cGUgbidhIMOpdMOpIHRyb3V2w6kgcG91ciB2b3RyZSByZWNoZXJjaGUuXCIsXG4gICAgd3JvbmdBbnN3ZXJUeHQ6IFwiTWF1dmFpc2UgcsOpcG9uc2VcIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBHRVNUSU9OIERVIEZPUk1VTEFJUkUgUEVSTUVUVEFOVCBERSBTQUlTSVIgLyDDiURJVEVSIExFUyBJTkZPUyBERVMgR1JPVVBFUyBERSBRVUlaU1xuXG4vLy8gVsOpcmlmaWUgcXVlIGwndXRpbGlzYXRldXIgZXN0IGJpZW4gY29ubmVjdMOpLCBhIGxlIGJvbiBzdGF0dXQgZXQgbGUgcmVkaXJpZ2UgdmVycyBsZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24gc2kgY2Ugbidlc3QgcGFzIGxlIGNhcy5cbi8vLyBTaSBjJ2VzdCBvaywgcHJvcG9zZSB1biBtb3RldXIgZGUgcmVjaGVyY2hlIHBlcm1ldHRhbnQgZGUgY2hlcmNoZXIgdW4gZ3JvdXBlLlxuLy8vIFNpIHVuIGlkIGVzdCBwYXNzw6kgcGFyIGwndXJsIG9uIGFmZmljaGUgbGVzIGluZm9ybWF0aW9ucyBkdSBncm91cGUgZGFucyB1biBmb3JtdWxhaXJlIHBlcm1ldHRhbnQgZGUgbCfDqWRpdGVyL3N1cHByaW1lci5cbi8vLyBTaSBwYXMgZCdpZCBwYXNzw6kgcGFyIGwndXJsLCBvbiBhZmZpY2hlIHVuIGZvcm11bGFpcmUgdmlkZSBwZXJtZXR0YW50IGQnZW4gc2Fpc2lyIHVuIG5vdXZlYXUuXG5cbi8vIEZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24gOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnUXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzXCIpO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbi8vIEZvbmN0aW9ucyA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGVtcHlGb3JtLCBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBkYXRlRm9ybWF0LCBpc0VtcHR5LCByZXBsYWNlQWxsIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IGFkZE9rTWVzc2FnZSwgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgZ3JvdXBRdWVzdGlvbm5haXJlc0xpc3QsIGdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0V2l0aG91dCwgaW5mb3NHcm91cEZvckFkbWluLCBzZWFyY2hXaXRob3V0UmVzdWx0IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dyb3VwXCIpO1xuY29uc3QgeyBuZWVkQmVDb25uZWN0ZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0bk5ld0dyb3VwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3YW50TmV3R3JvdXBcIik7XG5jb25zdCBidG5QcmV2aWV3R3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInByZXZpZXdHcm91cFwiKTtcbmNvbnN0IGRlbGV0ZUNoZWNrQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkZWxldGVPa0xhYmVsXCIpO1xuY29uc3QgZGl2Q3Jhc2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNyYXNoXCIpO1xuY29uc3QgZGl2R3JvdXBJbnRybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3JvdXBJbnRyb1wiKTtcbmNvbnN0IGRpdk1haW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1haW4tY29udGVudFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZRdWVzdGlvbm5haXJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25uYWlyZXNMaXN0XCIpO1xuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuY29uc3QgZGl2U2VhcmNoUmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hSZXN1bHRcIik7XG5jb25zdCBmb3JtR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdyb3Vwc1wiKTtcbmNvbnN0IGZvcm1TZWFyY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlYXJjaFwiKTtcblxuLy8gRm9uY3Rpb24gdXRpbGUgcG91ciB2aWRlciBsZSBmb3JtdWxhaXJlLCB5IGNvbXByaXMgbGVzIGNoYW1wcyBoaWRkZW4sIGV0Yy5cbmNvbnN0IGVtcHR5R3JvdXBGb3JtID0gKCkgPT5cbntcbiAgICBlbXB5Rm9ybShmb3JtR3JvdXApO1xuICAgIC8vIENhc2UgZGUgc3VwcHJlc3Npb24gZXQgYm91dG9uIHZpc3VhbGlzYXRpb24gaW51dGlsZXMgZW4gbW9kZSBjcsOpYXRpb24gOlxuICAgIGRlbGV0ZUNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgYnRuUHJldmlld0dyb3VwLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7ICAgXG4gICAgLy8gSW50cm8gw6AgdmlkZXIgIVxuICAgIGRpdkdyb3VwSW50cm8uaW5uZXJIVE1MPVwiXCI7XG59XG5cbi8vIEZvbmN0aW9uIGFmZmljaGFudCBsZXMgaW5mb3MgY29ubnVlcyBjb25jZXJuYW50IHVuIGdyb3VwZS5cbmNvbnN0IHNob3dGb3JtR3JvdXBJbmZvcyA9IChpZCwgdG9rZW4pID0+XG57XG4gICAgLy8gb24gY29tbWVuY2UgcGFyIHRvdXQgdmlkZXIsIGRlcyBmb2lzIHF1ZS4uLiA6XG4gICAgZW1wdHlHcm91cEZvcm0oKTtcbiAgICBjb25zdCB4aHJHZXRJbmZvcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHhockdldEluZm9zLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdyb3VwUm91dGVzK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdldEdyb3VwUm91dGUraWQpO1xuICAgIHhockdldEluZm9zLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuR3JvdXAgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcFRleHQgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgR1JPVVBfSUQgOiByZXNwb25zZS5Hcm91cC5pZCxcbiAgICAgICAgICAgICAgICAgICAgREFURV9DUkVBIDogZGF0ZUZvcm1hdChyZXNwb25zZS5Hcm91cC5jcmVhdGVkQXQpLFxuICAgICAgICAgICAgICAgICAgICBEQVRFX1VQREFURSA6IGRhdGVGb3JtYXQocmVzcG9uc2UuR3JvdXAudXBkYXRlZEF0KSxcbiAgICAgICAgICAgICAgICAgICAgTkJfRUxFTUVOVFMgOiAocmVzcG9uc2UuUXVlc3Rpb25uYWlyZXMhPT11bmRlZmluZWQpID8gcmVzcG9uc2UuUXVlc3Rpb25uYWlyZXMubGVuZ3RoIDogMFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbnRybz1yZXBsYWNlQWxsKGluZm9zR3JvdXBGb3JBZG1pbiwgbWFwVGV4dCk7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZHcm91cEludHJvLCBcInBcIiwgZ3JvdXBJbnRybywgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLkdyb3VwKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoZm9ybUdyb3VwLmVsZW1lbnRzW2RhdGFdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhPT09XCJwdWJsaXNoaW5nQXRcIiAmJiByZXNwb25zZS5Hcm91cFtkYXRhXSE9PW51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmVsZW1lbnRzW2RhdGFdLnZhbHVlPWRhdGVGb3JtYXQocmVzcG9uc2UuR3JvdXBbZGF0YV0sIFwiZm9ybVwiKTsvLyAhISBmb3JtYXQgcG91dmFudCBwb3NlciBzb3VjaXMgc2kgbmF2aWdhdGV1ciBuZSBnw6hyZSBwYXMgbGVzIGNoYW1wcyBkZSB0eXBlIFwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZWxlbWVudHNbZGF0YV0udmFsdWU9cmVzcG9uc2UuR3JvdXBbZGF0YV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlQ2hlY2tCb3guc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgYnRuUHJldmlld0dyb3VwLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLkdyb3VwW1wiaXNQdWJsaXNoYWJsZVwiXSA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIGJ0blByZXZpZXdHcm91cC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5wcmV2aWV3R3JvdXBSb3V0ZXMrXCIvXCIraWQrXCIvXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnRuUHJldmlld0dyb3VwLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgc2l0ZVVybCtcIi9cIitjb25maWdRdWVzdGlvbm5haXJlcy5kaXJXZWJHcm91cHMrXCIvXCIrcmVzcG9uc2UuR3JvdXBbXCJzbHVnXCJdK1wiLmh0bWxcIik7XG4gICAgICAgICAgICAgICAgLy8gYWZmaWNoYWdlIGRlcyDDqWzDqW1lbnRzIGR1IGdyb3VwZSA6XG4gICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuUXVlc3Rpb25uYWlyZXMgIT09IHVuZGVmaW5lZCAmJiByZXNwb25zZS5RdWVzdGlvbm5haXJlcy5sZW5ndGggIT09IDApXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdEhUTUw9XCJcIiwgb3B0aW9uc0RheVN0ciA9IHsgd2Vla2RheTogJ2xvbmcnfTtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEhUTUwrPVwiPGxpPjxhIGhyZWY9J1wiK2NvbmZpZ1RlbXBsYXRlLnF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UrXCI/aWQ9XCIrcmVzcG9uc2UuUXVlc3Rpb25uYWlyZXNbaV0uUXVlc3Rpb25uYWlyZS5pZCtcIicgaWQ9J3F1ZXN0aW9ubmFpcmVfXCIrcmVzcG9uc2UuUXVlc3Rpb25uYWlyZXNbaV0uUXVlc3Rpb25uYWlyZS5pZCtcIic+XCIrcmVzcG9uc2UuUXVlc3Rpb25uYWlyZXNbaV0uUXVlc3Rpb25uYWlyZS50aXRsZStcIjwvYT48L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5RdWVzdGlvbm5haXJlcy5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZRdWVzdGlvbm5haXJlcywgXCJoM1wiLCBncm91cFF1ZXN0aW9ubmFpcmVzTGlzdC5yZXBsYWNlKFwiI05CXCIsIHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVzLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcImgzXCIsIGdyb3VwUXVlc3Rpb25uYWlyZXNMaXN0V2l0aG91dCk7ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZRdWVzdGlvbm5haXJlcywgXCJ1bFwiLCBsaXN0SFRNTCwgXCJcIiwgXCJcIiwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB4aHJHZXRJbmZvcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit0b2tlbik7XG4gICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xufVxuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbihbXCJtYW5hZ2VyXCIsIFwiYWRtaW5cIl0sIFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlLCB7IG1lc3NhZ2U6IG5lZWRCZUNvbm5lY3RlZCwgY29sb3I6XCJlcnJvclwiIH0sIHdpbmRvdy5sb2NhdGlvbik7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpOy8vIGxpZW4gXCJDb21wdGVcIiBtZW51IGhlYWRlciB0ZW1wbGF0ZVxuICAgICAgICAgICAgZGl2TWFpbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGdldExvY2FseShcIm1lc3NhZ2VcIikpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIGdldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkubWVzc2FnZSwgXCJcIiwgW2dldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkuY29sb3JdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwibWVzc2FnZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEluaXRpYWxpc2F0aW9uIGRlcyBmb3JtdWxhaXJlcyA6XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnUXVlc3Rpb25uYWlyZXMsIGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1F1ZXN0aW9ubmFpcmVzLkdyb3VwLCBmb3JtR3JvdXApO1xuICAgICAgICAgICAgZW1wdHlHcm91cEZvcm0oKTtcbiAgICAgICAgICAgIC8vIFNpIHVuIGlkIGVzdCBwYXNzw6kgcGFyIGwndXJsLCBvbiBlc3NheWUgZCdhZmZpY2hlciBsZXMgaW5mb3MgOlxuICAgICAgICAgICAgbGV0IHVybERhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYodXJsRGF0YXMgJiYgdXJsRGF0YXMuaWQhPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0Zvcm1Hcm91cEluZm9zKHVybERhdGFzLmlkLCB1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIC8vIEJlc29pbiBkJ3VuIGNvdXAgZGUgS8OkcmNoZXIgPyBcbiAgICAgICAgICAgIGJ0bk5ld0dyb3VwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVtcHR5R3JvdXBGb3JtKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEVudm9pIGR1IGZvcm11bGFpcmUgcHJpbmNpcGFsIDpcbiAgICAgICAgICAgIGZvcm1Hcm91cC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHJHcm91cERhdGFzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkoZGF0YXMuaWQpICYmIChkYXRhcy5kZWxldGVPayAhPT0gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgeGhyR3JvdXBEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytcIi9cIitkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZighaXNFbXB0eShkYXRhcy5pZCkpXG4gICAgICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ3JvdXBSb3V0ZXMrXCIvXCIrZGF0YXMuaWQpOy8vIG1pc2Ugw6Agam91clxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgeGhyR3JvdXBEYXRhcy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ3JvdXBSb3V0ZXMpOy8vIG5vdXZlbCBlbnJlZ2lzdHJlbWVudFxuICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMSAmJiByZXNwb25zZS5pZCAhPSB1bmRlZmluZWQpIC8vIG5vdXZlbCBlbnJlZ2lzdHJlbWVudCBjcsOpw6lcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgYWRkT2tNZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcy5pZD1yZXNwb25zZS5pZDsgLy8gdXRpbGUgcG91ciByw6lhZmZpY2hhZ2UgKyBiYXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpIC8vIG1pc2Ugw6Agam91ciBvdSBzdXBwcmVzc2lvbiBva1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNFbXB0eShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtR3JvdXBJbmZvcyhkYXRhcy5pZCwgdXNlci50b2tlbik7Ly8gYWN0dWFsaXNhdGlvbiBkZSBsJ2FmZmljaGFnZSBhcHLDqHMgdHJhaXRlbWVudCBzZXJ2ZXVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUdyb3VwRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhockdyb3VwRGF0YXMuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgeGhyR3JvdXBEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICAgICAgeGhyR3JvdXBEYXRhcy5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gRW52b2kgZCd1bmUgcmVjaGVyY2hlXG4gICAgICAgICAgICBmb3JtU2VhcmNoLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhmb3JtU2VhcmNoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHJTZWFyY2ggPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2gub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdyb3VwUm91dGVzK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLnNlYXJjaEdyb3Vwc1JvdXRlKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2gub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgc2VhcmNoV2l0aG91dFJlc3VsdCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdEhUTUw9XCI8b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RIVE1MKz1cIjxvcHRpb24gdmFsdWU9J1wiK3Jlc3BvbnNlW2ldLmlkK1wiJz5cIityZXNwb25zZVtpXS50aXRsZStcIjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJzZWxlY3RcIiwgc2VsZWN0SFRNTCwgXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFNlbGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlbGVjdFNlYXJjaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWFyY2hTZWxlY3QudmFsdWUgIT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Zvcm1Hcm91cEluZm9zKHNlYXJjaFNlbGVjdC52YWx1ZSwgdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTZWFyY2hSZXN1bHQsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZDcmFzaCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpO1xuaGVsbG9EZXYoKTsiLCIvLyBGT05DVElPTlMgVVRJTEVTIEFVIFNUT0NLQUdFIExPQ0FMIChTRVNTSU9OLCBDT09LSUVTLCBJTkRFWERCLCBFVEMuKVxuLy8gUmV2ZW5pciBwb3VyIGfDqXJlciBsZSBjYXMgb8O5IGxvY2FsLnN0b3JhZ2Ugbidlc3QgcGFzIGNvbm51IHBvdXIgdXRpbGlzZXIgY29va2llXG4gICAgXG5leHBvcnQgY29uc3Qgc2F2ZUxvY2FseSA9IChuYW1lLCBkYXRhKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2FseSA9IChuYW1lLCBqc29uPWZhbHNlKSA9Plxue1xuICAgIGlmKGpzb24pXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxvY2FseSA9IChuYW1lKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50ID0gKGVsdFBhcmVudCwgZWx0VHlwZSwgZWx0Q29udGVudD1cIlwiLCBlbHRJZD1cIlwiLCBlbHRDbGFzcz1bXSwgZWx0QXR0cmlidXRlcz17fSwgcmVwbGFjZT10cnVlKSA9Plxue1xuICAgIGlmKGlzRW1wdHkoZWx0VHlwZSkgfHwgaXNFbXB0eShlbHRQYXJlbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsdFR5cGUpO1xuICAgICAgICBcbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0SWQpKS8vIHRlc3RlciBzaSBsJ2lkIG4nZXN0IHBhcyBkw6lqw6AgdXRpbGlzw6kgZGFucyBsZSBET00gP1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pZD1lbHRJZDtcblxuICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsdENsYXNzKSAmJiBlbHRDbGFzcy5sZW5ndGghPTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiBlbHRDbGFzcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWx0Q2xhc3NbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodHlwZW9mIGVsdEF0dHJpYnV0ZXMgPT09IFwib2JqZWN0XCIpIC8vICEhIHRvdXMgbGVzIG9iamV0cyBuZSBzb250IHBhcyBva1xuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGF0dHJpYnV0TmFtZSBpbiBlbHRBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0TmFtZSwgZWx0QXR0cmlidXRlc1thdHRyaWJ1dE5hbWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdENvbnRlbnQpKVxuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUw9ZWx0Q29udGVudC5yZXBsYWNlKC9cXG4vZyxcIjxicj5cIik7Ly8gaW5uZXJIVE1MIHBlcm1ldCBkJ2Fqb3V0ZXIgZHUgdGV4dGUgYXlhbnQgbHVpLW3Dqm1lIGRlcyBiYWxpc2VzLCBldGMuXG4gICAgICAgICAgICBcbiAgICAgICAgaWYocmVwbGFjZSlcbiAgICAgICAgICAgIGVsdFBhcmVudC5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgZWx0UGFyZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpO1xuICAgIH0gICAgXG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3Qgc2V0QXR0cmlidXRlc1RvSW5wdXRzID0gKGlucHV0c0NvbmYsIG15Rm9ybSkgPT5cbntcbiAgICBmb3IobGV0IGkgaW4gbXlGb3JtLmVsZW1lbnRzKVxuICAgIHtcbiAgICAgICAgaWYoIWlzRW1wdHkobXlGb3JtLmVsZW1lbnRzW2ldLmlkKSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGlkSW5wdXQ9bXlGb3JtLmVsZW1lbnRzW2ldLmlkO1xuICAgICAgICAgICAgaWYoaW5wdXRzQ29uZltpZElucHV0XSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRIVE1MPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkSW5wdXQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGF0dHJpYnV0ZSBpbiBpbnB1dHNDb25mW2lkSW5wdXRdKVxuICAgICAgICAgICAgICAgICAgICBpbnB1dEhUTUwuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgaW5wdXRzQ29uZltpZElucHV0XVthdHRyaWJ1dGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gUsOpY3Vww6hyZSB0b3V0ZXMgbGVzIHZhbGV1cnMgZGUgY2hhbXBzIGVuIG9tZXR0YW50IGxlcyBjaGVja2JveCBub24gY29jaMOpZXMsIGV0Yy5cbmV4cG9ydCBjb25zdCBnZXREYXRhc0Zyb21JbnB1dHMgPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGRhdGFzPXt9O1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgICAgIGRhdGFzW2VudHJpZVswXV09ZW50cmllWzFdO1xuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gVmlkZSB0b3VzIGxlcyBjaGFtcHMgZCd1biBmb3JtdWxhaXJlLCB5IGNvbXByaXMgaGlkZGVuLCBjaGVja2JveCwgZXRjLlxuLy8gUmV2b2lyIHBvdXIgbGVzIHNlbGVjdFxuZXhwb3J0IGNvbnN0IGVtcHlGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICB7XG4gICAgICAgIGlmKG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwiY2hlY2tib3hcIiB8fCBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cInJhZGlvXCIpXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS5jaGVja2VkPWZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS52YWx1ZT1cIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIFZpZGUgZXQgY2FjaGUgbGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGVtcHlBbmRIaWRlRm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgZW1weUZvcm0obXlGb3JtKTtcbiAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gcsOpY3Vww6lyYW50IGxlcyBwYXJhbcOodHJlcyBwYXNzw6lzIHBhciBsJ3VybFxuZXhwb3J0IGNvbnN0IGdldFVybFBhcmFtcyA9ICgpID0+XG57XG4gICAgaWYoaXNFbXB0eShsb2NhdGlvbi5zZWFyY2gpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gbG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdChcIiZcIik7XG4gICAgaWYoIUFycmF5LmlzQXJyYXkocGFyYW1ldGVycykgfHwgcGFyYW1ldGVycy5sZW5ndGg9PT0wKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIFxuICAgIGxldCBwYXJhbSwgZGF0YXM9e307XG4gICAgZm9yKGxldCBpIGluIHBhcmFtZXRlcnMpXG4gICAge1xuICAgICAgICBwYXJhbSA9IHBhcmFtZXRlcnNbaV0uc3BsaXQoXCI9XCIpO1xuICAgICAgICBpZihwYXJhbS5sZW5ndGg9PT0yKVxuICAgICAgICAgICAgZGF0YXNbcGFyYW1bMF1dPWRlY29kZVVSSShwYXJhbVsxXSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhcztcbn0iLCJpbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCBzaXRlVXJsLCB0aGVtZSB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyAgY2hlY2tMb2dpblJvdXRlLCB0aW1lRGlmZmVyZW5jZU1heCwgdGltZURpZmZlcmVuY2VNaW4sIHVzZXJSb3V0ZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL3VzZXJzLmpzXCI7XG5cbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRUaW1lRGlmZmVyZW5jZSA9ICgpID0+XG57XG4gICAgLy8gbXVsdGlwbGllciBwYXIgLTEsIGNhciBjJ2VzdCBjZSBxdSdpbCBmYXV0IFwiYWpvdXRlclwiIMOgIGwnaGV1cmUgVVRDIHBvdXIgcmV2ZW5pciBlbiBoZXVyZSBsb2NhbGUgcXVpIG0naW50w6lyZXNzZSBldCBub24gbCdpbnZlcnNlXG4gICAgY29uc3QgdGltZUxvY2FsPW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSotMTtcbiAgICBpZih0aW1lTG9jYWwgPiB0aW1lRGlmZmVyZW5jZU1heCB8fCB0aW1lTG9jYWwgPCB0aW1lRGlmZmVyZW5jZU1pbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gdGltZUxvY2FsO1xufVxuXG4vLyBKJ3V0aWxpc2UgbGUgc3RvY2thZ2UgbG9jYWwgZHUgbmF2aWdhdGV1ciBwb3VyIGVucmVnaXN0cmVyIGxlcyBkb25uw6llcyBwZXJtZXR0YW50IGRlIHJlY29ubmHDrnRyZSBsJ3V0aWxpc2F0ZXVyIHBhciBsYSBzdWl0ZVxuLy8gU2V1bCBsZSBzZXJ2ZXVyIHBvdXJyYSB2w6lyaWZpZXIgcXVlIGxlcyBpZGVudGlmaWFudHMgc29udCAodG91am91cnMpIHZhbGlkZXMuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9ICh1c2VySWQsIHRva2VuLCBkdXJhdGlvblRTKSA9Plxue1xuICAgIGNvbnN0IHN0b3JhZ2VVc2VyPVxuICAgIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25UU1xuICAgIH1cbiAgICBzYXZlTG9jYWx5KFwidXNlclwiLCBzdG9yYWdlVXNlcik7XG59XG5cbi8vIFbDqXJpZmllIHF1J2lsIHkgYSBkZXMgZG9ubsOpZXMgbG9jYWxlcyBjb25jZXJuYW50IGxlIHLDqXN1bHRhdCBkJ3VuIHF1aXogb3UgZCd1biBncm91cGUgZGUgcXVpenNcbi8vIEV0IGxlcyBham91dGUgYXV4IGRvbm7DqWVzIGVudm95w6llcyBwYXIgbGVzIGZvcm11bGFpcmVzIGQnaW5zY3JpcHRpb24vY29ubmV4aW9uIHNpIGMnZXN0IGxlIGNhc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyRGF0YXMgPSAoZGF0YXMpID0+XG57XG4gICAgY29uc3QgbGFzdEFuc3dlcj1nZXRMb2NhbHkoXCJsYXN0QW5zd2VyXCIpO1xuICAgIGlmKCFpc0VtcHR5KGxhc3RBbnN3ZXIpKVxuICAgIHtcbiAgICAgICAgY29uc3QgYW5zd2VyPUpTT04ucGFyc2UobGFzdEFuc3dlcik7XG4gICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLmR1cmF0aW9uPWFuc3dlci5kdXJhdGlvbjtcbiAgICAgICAgICAgIGRhdGFzLm5iQ29ycmVjdEFuc3dlcnM9YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICBkYXRhcy5uYlF1ZXN0aW9ucz1hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSlcbiAgICAgICAgICAgICAgICBkYXRhcy5RdWVzdGlvbm5haXJlSWQ9YW5zd2VyLlF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhcy5Hcm91cElkPWFuc3dlci5Hcm91cElkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gQ2V0dGUgZm9uY3Rpb24gdGVzdGUgbGEgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgZCd1bmUgcGFnZVxuLy8gT24gcGV1dCBmb3VybmlzIHVuZSBsaXN0ZSBkZSBzdGF0dXRzIGFjY2VwdMOpcyAoc2kgdmlkZSA9IHRvdXMpLCBhaW5zaSBxdSd1bmUgdXJsIGRlIHJlZGlyZWN0aW9uIHNpIG5vbiBjb25uZWN0w6ksIHVuIG1lc3NhZ2UgZCdlcnJldXIgw6AgYWZmaWNoZXIgc3VyIGxhIHBhZ2UgZGUgZGVzdGluYXRpb24gZXQgbCd1cmwgc3VyIGxhcXVlbGxlIHJldmVuaXIgdW5lIGZvaXMgY29ubmVjdMOpXG5leHBvcnQgY29uc3QgY2hlY2tTZXNzaW9uID0gYXN5bmMgKHN0YXR1cz1bXSwgdXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhcz1nZXRMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICBpZihpc0VtcHR5KHVzZXJEYXRhcykpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1KU09OLnBhcnNlKHVzZXJEYXRhcyk7XG4gICAgICAgICAgICBpZihpc0VtcHR5KHVzZXIuaWQpIHx8wqBpc0VtcHR5KHVzZXIudG9rZW4pIHx8IGlzRW1wdHkodXNlci5kdXJhdGlvbikgfHwgdXNlci5kdXJhdGlvbiA8IERhdGUubm93KCkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tMb2dpblJvdXRlK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuaXNWYWxpZCAmJiByZXNwb25zZS5pZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmlkPT09dXNlci5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm5hbWU9cmVzcG9uc2UubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLmxhbmd1YWdlPXJlc3BvbnNlLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIudGltZURpZmZlcmVuY2U9cmVzcG9uc2UudGltZURpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5zdGF0dXM9cmVzcG9uc2Uuc3RhdHVzOy8vIGMnZXN0IGxlIHRva2VuIHF1aSBzZXJ0IMOgIHbDqXJpZmllciBsZSBzdGF0dXQgw6AgY2hhcXVlIHJlcXXDqnRlIMOgIGwnQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUxvY2FseShcInVzZXJcIiwgdXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2kgaWwgcydhZ2l0IGQndW4gXCJ1c2VyXCIgZXQgcXVlIHNvbiBhYm9ubmVtZW50IGEgZXhwaXLDqSwgamUgbGUgcmVkaXJpZ2UgdmVycyBsYSBjYWlzc2UgOi0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzPT09XCJ1c2VyXCIgJiYgcmVzcG9uc2UubmJEYXlzT2sgPD0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybEFjY291bnQ9c2l0ZVVybCtcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZih1cmxBY2NvdW50KT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZStcIiNzdWJzY3JpYmVcIik7Ly8gcGFzc8OpZSBkaXJlY3RlbWVudCBpY2ksIGwnYW5jcmUgI3N1YnNjcmliZSBuZSBmb25jdGlvbm5lIHBhcyAhP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0dXMubGVuZ3RoIT09MCAmJiBzdGF0dXMuaW5kZXhPZihyZXNwb25zZS5zdGF0dXMpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHhoci5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyBDZXR0ZSBmb25jdGlvbiBzZXJ0IMOgIGxhIHByw6ljw6lkZW50ZSBlbiBjYXMgZGUgY29ubmV4aW9uIG5vbiB2YWxpZGVcbmNvbnN0IHJlZGlyZWN0VXNlciA9ICh1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKVxuICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCBtZXNzYWdlKTtcbiAgICBpZighaXNFbXB0eSh1cmxXYW50ZWQpKVxuICAgICAgICBzYXZlTG9jYWx5KFwidXJsXCIsIHVybFdhbnRlZCk7XG4gICAgaWYoIWlzRW1wdHkodXJsUmVkaXJlY3Rpb24pKVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHVybFJlZGlyZWN0aW9uKTtcbn0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/front/public/JS/manageQuestionnaires.app.js b/front/public/JS/manageQuestionnaires.app.js index b0e2cbe..a144331 100644 --- a/front/public/JS/manageQuestionnaires.app.js +++ b/front/public/JS/manageQuestionnaires.app.js @@ -93,7 +93,7 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var instance = __webpack_require__(/*! ./instance */ "../config/instance.js"); +const instance = __webpack_require__(/*! ./instance */ "../config/instance.js"); module.exports = { // API'routes (after "apiUrl" defined in instance.js) @@ -128,15 +128,11 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -204,8 +200,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -766,9 +775,9 @@ module.exports = { correctAnswerTxt: "Bonne réponse", estimatedTime: "Durée de lecture estimée : ", estimatedTimeOption: { - "short": "courte", + short: "courte", medium: "moyenne", - "long": "longue" + long: "longue" }, explanationBeforeTxt: "Extrait :", haveBeenPublished: ":NB nouveaux questionnaires ont été publiés.", @@ -912,99 +921,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -2264,4 +2252,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbGx1c3RyYXRpb25zLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvaW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9saW5rcy5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL2lsbHVzdHJhdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9saW5rJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9uJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmUkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9pbGx1c3RyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvbGluay5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsiaW5zdGFuY2UiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImlsbHVzdHJhdGlvbnNSb3V0ZSIsIklsbHVzdHJhdGlvbiIsImFsdCIsIm1heGxlbmd0aCIsInRpdGxlIiwiY2FwdGlvbiIsImltYWdlIiwicmVxdWlyZWQiLCJhY2NlcHQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJqb2luIiwiZGlySWxsdXN0cmF0aW9uc1RtcCIsImRpcklsbHVzdHJhdGlvbnMiLCJ1c2VycyIsInF1ZXN0aW9ubmFpcmVzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsImxpbmtzUm91dGUiLCJMaW5rIiwidXJsIiwiYW5jaG9yIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhZGRlZE9rTWVzc2FnZSIsImFkZElsbHVzdHJhdGlvblR4dCIsImRlZmF1bHRBbHQiLCJkZWxldGVkT2tNZXNzYWdlIiwiaW50cm9Ob0lsbHVzdHJhdGlvbiIsImludHJvVGl0bGVGb3JJbGx1c3RyYXRpb24iLCJuZWVkR29vZEZpbGUiLCJuZWVkR29vZExvbmdBbHQiLCJuZWVkR29vZExvbmdDYXB0aW9uIiwibmVlZEdvb2RMb25nVGl0bGUiLCJuZWVkR29vZExvbmdVcmwiLCJuZWVkTWF4SWxsdXN0cmF0aW9uc0ZvclF1ZXN0aW9ubmFpcmUiLCJuZWVkUXVlc3Rpb25uYWlyZUZvcklsbHVzdHJhdGlvbiIsIm5lZWRVbmlxdWVVcmwiLCJuZWVkVXJsIiwibm90Rm91bmQiLCJ1cGRhdGVkT2tNZXNzYWdlIiwiYWRkTGlua1R4dCIsImRlZmF1bHRWYWx1ZUZvckxpbmsiLCJpbnRyb05vTGluayIsImludHJvVGl0bGVGb3JMaW5rIiwibmVlZEFuY2hvciIsIm5lZWRHb29kTG9uZ0FuY2hvciIsIm5lZWRNYXhMaW5rc0ZvclF1ZXN0aW9ubmFpcmUiLCJuZWVkTm90VG9vTG9uZ1VybCIsIm5lZWRRdWVzdGlvbm5haXJlIiwibmVlZFZhbGlkVXJsIiwiYWRkUXVlc3Rpb25UeHQiLCJpbnRyb05vUXVlc3Rpb24iLCJpbnRyb1RpdGxlRm9yUXVlc3Rpb24iLCJuZWVkTWF4UXVlc3Rpb25zIiwibmVlZE5vdFRvb0xvbmdUZXh0IiwibmVlZE51bWJlckZvclJhbmsiLCJuZWVkVGV4dCIsImJ0blNlbmRSZXNwb25zZSIsImJ0blNoYXJlUXVpelR4dCIsImJ0blNoYXJlUXVpek1haWxCb2R5IiwiYnRuU2hvd1F1ZXN0aW9ubmFpcmUiLCJjb3JyZWN0QW5zd2VyVHh0IiwiZXN0aW1hdGVkVGltZSIsImVzdGltYXRlZFRpbWVPcHRpb24iLCJtZWRpdW0iLCJleHBsYW5hdGlvbkJlZm9yZVR4dCIsImhhdmVCZWVuUHVibGlzaGVkIiwiaGF2ZUJlZW5SZWdlbmVyYXRlZCIsImxhc3RVcGRhdGVkIiwibGlua0dvVG9OZXh0RWxlbWVudCIsImxpbmtHb1RvUXVpeiIsIm5lZWRDb3JyZWN0UHVibGlzaGluZ0RhdGUiLCJuZWVkRXN0aW1hdGVkVGltZSIsIm5lZWRHcm91cElmUmFuayIsIm5lZWRJbnRyb2R1Y3Rpb24iLCJuZWVkS25vd0lmSXNQdWJsaXNoZWQiLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTm90VG9vTG9uZ1RpdGxlIiwibmVlZFRpdGxlIiwibmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSIsIm5leHRRdWVzdGlvbm5haXJlc0xpc3QiLCJxdWVzdGlvbm5haXJlc05hbWUiLCJxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkIiwicHVibGlzaGVkQXQiLCJwdWJsaXNoZWRCeSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVSZXN1bHRUaXRsZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQiLCJzZWFyY2hRdWVzdGlvbm5haXJlV2l0aFJlc3VsdCIsIndyb25nQW5zd2VyVHh0IiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJteVN0cmluZyIsImlzRW1wdHkiLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnIiwiY29uZmlnSWxsdXN0cmF0aW9ucyIsImNvbmZpZ0xpbmtzIiwiY29uZmlnUXVlc3Rpb25uYWlyZXMiLCJjb25maWdUZW1wbGF0ZSIsImJ0bk5ld1F1ZXN0aW9ubmFpcmUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUiLCJkZWxldGVDaGVja0JveCIsImRpdkNyYXNoIiwiZGl2SWxsdXN0cmF0aW9ucyIsImRpdkxpbmtzIiwiZGl2TWFpbiIsImRpdk1lc3NhZ2UiLCJkaXZRdWVzdGlvbm5haXJlcyIsImRpdlF1ZXN0aW9ucyIsImRpdlJlc3BvbnNlIiwiZGl2U2VhcmNoUmVzdWx0IiwiZm9ybUxpbmsiLCJmb3JtSWxsdXN0cmF0aW9uIiwiZm9ybVF1ZXN0aW9uIiwiZm9ybVF1ZXN0aW9ubmFpcmUiLCJmb3JtU2VhcmNoIiwiaGVscENsYXNzaWZpY2F0aW9uIiwiaGVscEdyb3VwIiwiaGVscFB1Ymxpc2hpbmdBdCIsImlucHV0Q2xhc3NpZmljYXRpb24iLCJpbnB1dEdyb3VwIiwiaW5wdXRSYW5rSW5Hcm91cCIsImhpZGVBbGxGb3JtcyIsImVtcHlBbmRIaWRlRm9ybSIsInNob3dGb3JtTGlua0luZm9zIiwic3R5bGUiLCJkaXNwbGF5Iiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiZGF0YSIsImVsZW1lbnRzIiwic2hvd0xpbmtJbmZvcyIsIkxpbmtzIiwidG9rZW4iLCJhZGRFbGVtZW50IiwibGlzdExpbmtzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIndpbmRvdyIsImxvY2F0aW9uIiwiYXNzaWduIiwic2VuZExpbmtGb3JtIiwibmV3QnRuIiwiZGl2UmVzcG9uc2VMaW5rIiwiaW5uZXJIVE1MIiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJMaW5rRGF0YXMiLCJYTUxIdHRwUmVxdWVzdCIsImRlbGV0ZU9rIiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzdGF0dXMiLCJtZXNzYWdlIiwicXVlc3Rpb25uYWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNob3dOZXh0UXVlc3Rpb25uYWlyZXMiLCJlcnJvcnMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInN0cmluZ2lmeSIsInNob3dGb3JtSWxsdXN0cmF0aW9uSW5mb3MiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzaG93SWxsdXN0cmF0aW9uSW5mb3MiLCJJbGx1c3RyYXRpb25zIiwibGlzdElsbHVzdHJhdGlvbnMiLCJzZW5kSWxsdXN0cmF0aW9uRm9ybSIsImRpdlJlc3BvbnNlSWxsdXN0cmF0aW9uIiwiZGF0YXNXaXRoRmlsZXMiLCJGb3JtRGF0YSIsInhocklsbHVzdHJhdGlvbkRhdGFzIiwic2hvd0Zvcm1RdWVzdGlvbkluZm9zIiwiQ2hvaWNlcyIsImlzQ29ycmVjdCIsImNoZWNrZWQiLCJzaG93UXVlc3Rpb25JbmZvcyIsIlF1ZXN0aW9ucyIsImxpc3RRdWVzdGlvbnMiLCJzZW5kUXVlc3Rpb25Gb3JtIiwiZGl2UmVzcG9uc2VRdWVzdGlvbiIsInhoclF1ZXN0aW9uRGF0YXMiLCJzaG93Rm9ybVF1ZXN0aW9ubmFpcmVJbmZvcyIsInhockdldEluZm9zIiwicmVzZXQiLCJkYXRlRm9ybWF0IiwiVGFncyIsImNsYXNzaWZpY2F0aW9uIiwic2V0QXR0cmlidXRlIiwieGhyTmV4dFF1ZXN0aW9ubmFpcmVzIiwibGlzdEhUTUwiLCJkYXlTdHIiLCJvcHRpb25zRGF5U3RyIiwid2Vla2RheSIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImZvcm1hdCIsImRhdGVQdWJsaXNoaW5nIiwiaXNQdWJsaXNoYWJsZSIsImRhdGVOZWVkZWQiLCJ0YXJnZXQiLCJzcGxpdCIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsImNvbG9yIiwiZ2V0TG9jYWx5IiwicmVtb3ZlTG9jYWx5IiwidXNlciIsInVwZGF0ZUFjY291bnRMaW5rIiwidXJsRGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJ4aHJTZWFyY2giLCJzZWxlY3RIVE1MIiwic2VhcmNoU2VsZWN0IiwidGFncyIsInJldmVyc2UiLCJsYXN0VGFnIiwieGhyU2VhcmNoVGFncyIsImdyb3VwSW5wdXQiLCJ4aHJTZWFyY2hHcm91cHMiLCJtYXhSYW5rIiwicmFua0luR3JvdXAiLCJHcm91cElkIiwieGhyUXVlc3Rpb25uYWlyZURhdGFzIiwiY29uc29sZSIsImVycm9yIiwiaGVsbG9EZXYiLCJzYXZlTG9jYWx5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJwYXJhbWV0ZXJzIiwicGFyYW0iLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwibm93IiwieGhyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxJQUFNQSxRQUFRLEdBQUdDLG1CQUFPLENBQUMseUNBQUQsQ0FBeEI7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUNBO0FBQ0k7QUFDQUMsb0JBQWtCLEVBQUUsZ0JBRnhCO0FBR0k7QUFDQUMsY0FBWSxFQUNaO0FBQ0lDLE9BQUcsRUFBRTtBQUFFQyxlQUFTLEVBQUU7QUFBYixLQURUO0FBRUlDLFNBQUssRUFBRTtBQUFFRCxlQUFT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QUFQO0FBQ0g7QUFDSixXQWxDRCxNQW9DQTtBQUNJeEUsa0ZBQVksQ0FBQyxNQUFELENBQVo7QUFDQTJFLHdCQUFZLENBQUNOLGNBQUQsRUFBaUIzSCxPQUFqQixFQUEwQjRILFNBQTFCLENBQVo7QUFDQUUsbUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFNBNUNEOztBQTZDQUssV0FBRyxDQUFDUSxPQUFKLEdBQWMsTUFBTVosTUFBTSxDQUFDSSxHQUFHLENBQUNTLFVBQUwsQ0FBMUI7O0FBQ0FULFdBQUcsQ0FBQzVILElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU0wSCxZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQjNILE9BQWpCLEVBQTBCNEgsU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUNuUiwyREFBTyxDQUFDdUosT0FBRCxDQUFYLEVBQ0kyRSxvRUFBVSxDQUFDLFNBQUQsRUFBWTNFLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ3ZKLDJEQUFPLENBQUNtUixTQUFELENBQVgsRUFDSWpELG9FQUFVLENBQUMsS0FBRCxFQUFRaUQsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDblIsMkRBQU8sQ0FBQ2tSLGNBQUQsQ0FBWCxFQUNJaEosTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxNQUFoQixDQUF1QjhJLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuanNcIik7XG4iLCJjb25zdCBpbnN0YW5jZSA9IHJlcXVpcmUoXCIuL2luc3RhbmNlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIGlsbHVzdHJhdGlvbnNSb3V0ZTogXCIvaWxsdXN0cmF0aW9uL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIElsbHVzdHJhdGlvbiA6XG4gICAge1xuICAgICAgICBhbHQ6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICAgICAgY2FwdGlvbjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgICAgICBpbWFnZTogeyByZXF1aXJlZDogdHJ1ZSwgYWNjZXB0OiBpbnN0YW5jZS5taW1lVHlwZXNGb3JJbGx1c3RyYXRpb24uam9pbihcIixcIikgfVxuICAgIH0sXG4gICAgLy8gZmlsZXMgdXBsb2FkIHRlbXBvcnkgZGlyXG4gICAgZGlySWxsdXN0cmF0aW9uc1RtcCA6IFwidGVtcFwiLFxuICAgIGRpcklsbHVzdHJhdGlvbnM6IFwiZnJvbnQvcHVibGljL2ltZy9xdWl6c1wiXG59OyIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIGxpbmtzUm91dGU6IFwiL2xpbmsvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgTGluayA6XG4gICAge1xuICAgICAgICB1cmw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGFuY2hvcjogeyBtYXhsZW5ndGg6IDE1MCwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2lsbHVzdHJhdGlvblwiOiBcIi4uL2xhbmcvZnIvaWxsdXN0cmF0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvaWxsdXN0cmF0aW9uJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9saW5rXCI6IFwiLi4vbGFuZy9mci9saW5rLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvbGluayRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvcXVlc3Rpb25cIjogXCIuLi9sYW5nL2ZyL3F1ZXN0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvcXVlc3Rpb24kXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3F1ZXN0aW9ubmFpcmVcIjogXCIuLi9sYW5nL2ZyL3F1ZXN0aW9ubmFpcmUuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9xdWVzdGlvbm5haXJlJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkZWRPa01lc3NhZ2U6IFwiTCdpbGx1c3RyYXRpb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBhZGRJbGx1c3RyYXRpb25UeHQ6IFwiQWpvdXRlciB1bmUgaWxsdXN0cmF0aW9uXCIsXG4gICAgZGVmYXVsdEFsdCA6IFwiSWxsdXN0cmF0aW9uIGR1IHF1aXpcIixcbiAgICBkZWxldGVkT2tNZXNzYWdlOiBcIkwnaWxsdXN0cmF0aW9uIGEgYmllbiDDqXTDqSBzdXBwcmltw6llLlwiLFxuICAgIGludHJvTm9JbGx1c3RyYXRpb24gOiBcIkF1Y3VuZSBpbGx1c3RyYXRpb24gcG91ciBsJ2luc3RhbnQuXCIsXG4gICAgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbiA6IFwiSWxsdXN0cmF0aW9ucyBkdSBxdWl6XCIsXG4gICAgbmVlZEdvb2RGaWxlIDogXCJWb3RyZSBmaWNoaWVyIG4nYSBwYXMgw6l0w6kgYWNjZXB0w6kuXCIsXG4gICAgbmVlZEdvb2RMb25nQWx0IDogXCJMZSB0ZXh0ZSBkZSBsYSBwcm9wcmnDqXTDqSAnYWx0JyBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRHb29kTG9uZ0NhcHRpb24gOiBcIkxlIHRleHRlIGRlIGxhIGzDqWdlbmRlIGRlIGwnaW1hZ2UgbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkR29vZExvbmdUaXRsZSA6IFwiTGUgdGV4dGUgZGUgbGEgcHJvcHJpw6l0w6kgJ3RpdGxlJyBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRHb29kTG9uZ1VybCA6IFwiTCd1cmwgZGUgbCdpbWFnZSBkb2l0IGNvbnRlbmlyIGVudHJlIDUgZXQgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhJbGx1c3RyYXRpb25zRm9yUXVlc3Rpb25uYWlyZSA6IFwiVm91cyBhdmV6IGTDqWrDoCBhdHRlaW50IGxlIG5vbWJyZSBtYXhpbWFsIGQnaWxsdXN0cmF0aW9ucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUuXCIsXG4gICAgbmVlZFF1ZXN0aW9ubmFpcmVGb3JJbGx1c3RyYXRpb24gOiBcIlRlbnRhdGl2ZSBkJ2Fqb3V0L21pc2Ugw6Agam91ci9zdXBwcmVlc3Npb24gZCd1bmUgaWxsdXN0cmF0aW9uIHBvdXIgdW4gcXVlc3Rpb25uYWlyZSBuJ2F5YW50IHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIG5lZWRVbmlxdWVVcmwgOiBcIkwndXJsIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBhciB1bmUgYXV0cmUgaW1hZ2UuXCIsXG4gICAgbmVlZFVybCA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgdXJsIHBvdXIgbCdpbWFnZS5cIixcbiAgICBub3RGb3VuZDogXCJMJ2VucmVnaXN0cmVtZW50IGRlIGwnaWxsdXN0cmF0aW9uIG4nYSBwYXMgw6l0w6kgdHJvdXbDqSA6IFwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiTCdpbGx1c3RyYXRpb24gYSBiaWVuIMOpdMOpIG1vZGlmacOpZS5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZGVkT2tNZXNzYWdlOiBcIkxlIGxpZW4gYSBiaWVuIMOpdMOpIGFqb3V0w6kuXCIsXG4gICAgYWRkTGlua1R4dDogXCJBam91dGVyIHVuIGxpZW5cIixcbiAgICBkZWZhdWx0VmFsdWVGb3JMaW5rOiBcIkxpcmUgbCdhcnRpY2xlIHN1ciBXaWtpcMOpZGlhLlwiLFxuICAgIGRlbGV0ZWRPa01lc3NhZ2U6IFwiTGUgbGllbiBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGludHJvTm9MaW5rIDogXCJBdWN1biBsaWVuIHBvdXIgbCdpbnN0YW50LlwiLFxuICAgIGludHJvVGl0bGVGb3JMaW5rIDogXCJMZWN0dXJlcyBwcm9wb3PDqWVzXCIsXG4gICAgbmVlZEFuY2hvciA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgYW5jcmUgcG91ciBjZSBsaWVuLlwiLFxuICAgIG5lZWRHb29kTG9uZ0FuY2hvciA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgYW5jcmUgcG91ciBjZSBsaWVuIGNvbXB0YW50IGVudHJlIDUgZXQgMTUwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhMaW5rc0ZvclF1ZXN0aW9ubmFpcmUgOiBcIlZvdXMgYXZleiBkw6lqw6AgYXR0ZWludCBsZSBub21icmUgbWF4aW1hbCBkZSBsaWVucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdVcmwgOiBcIk1lcmNpIGRlICBzYWlzaXIgdW4gdXJsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUXVlc3Rpb25uYWlyZSA6IFwiTGUgcXVlc3Rpb25uYWlyZSBkdSBsaWVuIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICBuZWVkVXJsIDogXCJNZXJjaSBkZSAgc2Fpc2lyIGwndXJsIGR1IGxpZW4uXCIsXG4gICAgbmVlZFZhbGlkVXJsIDogXCJNZXJjaSBkZSAgc2Fpc2lyIHVuIHVybCBheWFudCB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5vdEZvdW5kIDogXCJMJ2VucmVnaXN0cmVtZW50IGR1IGxpZW4gbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiTGUgbGllbiBhIGJpZW4gw6l0w6kgbW9kaWZpw6kuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZE9rTWVzc2FnZTogXCJMYSBxdWVzdGlvbiBhIGJpZW4gw6l0w6kgYWpvdXTDqWUuXCIsXG4gICAgYWRkUXVlc3Rpb25UeHQ6IFwiQWpvdXRlciB1bmUgcXVlc3Rpb25cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTGEgcXVlc3Rpb24gYSBiaWVuIMOpdMOpIHN1cHByaW3DqWUuXCIsXG4gICAgaW50cm9Ob1F1ZXN0aW9uOiBcIkF1Y3VuZSBxdWVzdGlvbiBuJ2Egw6l0w6kgc2Fpc2llIHBvdXIgbCdpbnN0YW50XCIsXG4gICAgaW50cm9UaXRsZUZvclF1ZXN0aW9uOiBcIkxlcyBxdWVzdGlvbnMgZW5yZWdpc3Ryw6llc1wiLFxuICAgIG5lZWRNYXhRdWVzdGlvbnM6IFwiVm91cyBhdmV6IGTDqWrDoCBhdHRlaW50IGxlIG5vbWJyZSBtYXhpbWFsIGRlIHF1ZXN0aW9ucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUgOiBcIiwgICAgICAgICBcbiAgICBuZWVkTm90VG9vTG9uZ1RleHQ6IFwiTGEgcXVlc3Rpb24gbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTnVtYmVyRm9yUmFuayA6IFwiVm91cyBkZXZleiBmb3VybmlyIHVuIG5vbWJyZSBzdXDDqXJpZXVyIG91IMOpZ2FsIMOgIDEgcG91ciBsZSByYW5nIGRlIGNldHRlIHF1ZXN0aW9uLlwiLCBcbiAgICBuZWVkUXVlc3Rpb25uYWlyZTogXCJMZSBxdWVzdGlvbm5haXJlIGNvbmNlcm7DqSBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgbmVlZFRleHQ6IFwiTWVyY2kgZGUgc2Fpc2lyIGxlIHRleHRlIGRlIGxhIHF1ZXN0aW9uICFcIiwgICBcbiAgICBub3RGb3VuZDogXCJMJ2VucmVnaXN0cmVtZW50IGRlIGxhIHF1ZXN0aW9uIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB1cGRhdGVPa01lc3NhZ2U6IFwiTGEgcXVlc3Rpb24gYSBiaWVuIMOpdMOpIG1vZGlmacOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsLy8gZMOpcGxhY8OpIGRhbnMgZ2VuZXJhbC5qc1xuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIiwvL2lkZW1cbiAgICBidG5TZW5kUmVzcG9uc2U6IFwiVGVzdGV6IHZvcyByw6lwb25zZXMuXCIsXG4gICAgYnRuU2hhcmVRdWl6VHh0OiBcIlBhcnRhZ2VyIHZpYSBcIixcbiAgICBidG5TaGFyZVF1aXpNYWlsQm9keTogXCJCb25qb3VyLCUwQSUwQVZvaWNpJTIwdW4lMjBsaWVuJTIwaW50ZXJuZXQlMjBxdWklMjBkZXZyYWl0JTIwdCdpbnTDqXJlc3NlciA6JTBBXCIsICAgIFxuICAgIGJ0blNob3dRdWVzdGlvbm5haXJlOiBcIlLDqXBvbmRyZSBhdSBxdWl6ICFcIixcbiAgICBjb3JyZWN0QW5zd2VyVHh0OiBcIkJvbm5lIHLDqXBvbnNlXCIsXG4gICAgZXN0aW1hdGVkVGltZTogXCJEdXLDqWUgZGUgbGVjdHVyZSBlc3RpbcOpZSA6IFwiLFxuICAgIGVzdGltYXRlZFRpbWVPcHRpb24gOlxuICAgIHtcbiAgICAgICAgc2hvcnQ6IFwiY291cnRlXCIsXG4gICAgICAgIG1lZGl1bTogXCJtb3llbm5lXCIsXG4gICAgICAgIGxvbmc6IFwibG9uZ3VlXCJcbiAgICB9LFxuICAgIGV4cGxhbmF0aW9uQmVmb3JlVHh0OiBcIkV4dHJhaXQgOlwiLFxuICAgIGhhdmVCZWVuUHVibGlzaGVkIDogXCI6TkIgbm91dmVhdXggcXVlc3Rpb25uYWlyZXMgb250IMOpdMOpIHB1Ymxpw6lzLlwiLFxuICAgIGhhdmVCZWVuUmVnZW5lcmF0ZWQgOiBcIkxlcyBwYWdlcyBIVE1MIGRlICNOQjEgcXVlc3Rpb25uYWlyZXMgb3Ugw6lsw6ltZW50cyBkZSBncm91cGVzLCAjTkIyIHF1aXpzIGdyb3Vww6lzIGV0ICNOQjMgdGjDqG1lcyBvbnQgw6l0w6kgcmVnw6luw6lyw6lzLlwiLFxuICAgIGxhc3RVcGRhdGVkOiBcIkRlcm5pw6hyZSBtaXNlIMOgIGpvdXIsIGxlIFwiLFxuICAgIGxpbmtHb1RvTmV4dEVsZW1lbnQ6IFwiQXJ0aWNsZSBzdWl2YW50XCIsXG4gICAgbGlua0dvVG9RdWl6OiBcIkFjY8OpZGVyIGF1IHF1aXpcIiwgICAgXG4gICAgbmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZTogXCJMYSBkYXRlIGRlIHB1YmxpY2F0aW9uIGZvdXJuaWUgbidhIHBhcyB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5lZWRFc3RpbWF0ZWRUaW1lOiBcIk1lcmNpIGRlIHPDqWxlY3Rpb25uZXIgdW5lIGVzdGltYXRpb24gZGUgbGEgZHVyw6llIGRlIGNlIHF1aXouXCIsXG4gICAgbmVlZEdyb3VwSWZSYW5rOiBcIlZvdXMgYXZleiBzYWlzaSB1biByYW5nIGRlIGNsYXNzZW1lbnQsIHNhbnMgc8OpbGVjdGlvbm5lciBsZSBncm91cGUgZHUgcXVpei5cIixcbiAgICBuZWVkSW50cm9kdWN0aW9uOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGV4dGUgZCdpbnRyb2R1Y3Rpb24gw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkS25vd0lmSXNQdWJsaXNoZWQ6IFwiSWwgZmF1dCBzYXZvaXIgc2kgY2UgcXVpeiBlc3QgcHVibGnDqS5cIixcbiAgICBuZWVkTGFuZ3VhZ2U6IFwiVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyIGxhIGxhbmd1ZSBkZSBjZSBxdWl6LlwiLFxuICAgIG5lZWROb3RUb29Mb25nVGl0bGU6IFwiTGUgdGl0cmUgZHUgcXVpeiBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROdW1iZXJGb3JSYW5rOiBcIlZvdXMgZGV2ZXogc2Fpc2lyIHVuIG5vbWJyZSBlbnRpZXIgcG91ciBsZSByYW5nIGRlIGNlIHF1ZXN0aW9ubmFpcmUgZGFucyBzb24gZ3JvdXBlLlwiLCAgICAgICAgICAgICAgXG4gICAgbmVlZFRpdGxlOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGl0cmUgw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkVW5pcXVlVXJsOiBcIkwndXJsIGR1IHF1aXogZG9pdCDDqnRyZSB1bmlxdWUuXCIsXG4gICAgbmVlZFVybDogXCJNZXJjaSBkZSBmb3VybmlyIGwndXJsIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZTogXCJQcm9jaGFpbmUgZGF0ZSBzYW5zIHF1aXogcHJvZ3JhbW3DqSA6IFwiLFxuICAgIG5leHRRdWVzdGlvbm5haXJlc0xpc3Q6IFwiTGVzICNOQiBwcm9jaGFpbnMgcXVpenMgZGV2YW50IMOqdHJlIHB1Ymxpw6lzXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNOYW1lOiBcInF1aXpcIixcbiAgICBxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkOiBcIlF1aXogaW5jb21wbGV0XCIsXG4gICAgcHVibGlzaGVkQXQ6IFwiLCBsZVwiLFxuICAgIHB1Ymxpc2hlZEJ5OiBcIlF1aXogcHVibGnDqSBwYXJcIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlUmVzdWx0VGl0bGUgOiBcIlLDqXN1bHRhdCBwb3VyIHZvdHJlIHJlY2hlcmNoZVwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQgOiBcIkF1Y3VuIHF1aXogbidhIMOpdMOpIHRyb3V2w6kgcG91ciB2b3RyZSByZWNoZXJjaGUuXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQgOiBcIklsIHkgYSAjTkIgYXJ0aWNsZSNTIGNvcnJlc3BvbmRhbnQgw6Agdm90cmUgcmVjaGVyY2hlIDpcIixcbiAgICB3cm9uZ0Fuc3dlclR4dDogXCJNYXV2YWlzZSByw6lwb25zZVwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIERFIFNBSVNJUiAvIMOJRElURVIgTEVTIFFVSVpTIEVUIExFVVJTIETDiVBFTkRBTkNFUyAoTElFTlMsIElNQUdFUywgVEFHUywgRVRDLilcblxuLy8vIFbDqXJpZmllIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlIHZlcnMgbGUgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIHNpIGNlIG4nZXN0IHBhcyBsZSBjYXMuXG4vLy8gU2kgYydlc3Qgb2ssIHByb3Bvc2UgdW4gbW90ZXVyIGRlIHJlY2hlcmNoZSBwZXJtZXR0YW50IGRlIGNoZXJjaGVyIHVuIHF1aXpcbi8vLyBTaSB1biBpZCBlc3QgcGFzc8OpIHBhciBsJ3VybCBvbiBhZmZpY2hlIGxlcyBpbmZvcm1hdGlvbnMgZHUgcXVpeiBkYW5zIHVuIGZvcm11bGFpcmUgcGVybWV0dGFudCBkZSBsJ8OpZGl0ZXIvc3VwcHJpbWVyIGF2ZWMgdW5lIGxpc3RlIGRlcyDDqWzDqW1lbnRzIGxpw6lzIChsaWVucywgaWxsdXN0cmF0aW9ucywgcXVlc3Rpb25zLi4uKSBwb3V2YW50IGV1eC1tw6ptZXMgw6p0cmUgw6lkaXTDqXMvc3VwcHJpbcOpcy5cbi8vLyBTaSBsZSBub21icmUgbWF4IGNvbmZpZ3Vyw6kgcG91ciBjaGFjdW4gZGUgc2VzIMOpbMOpbWVudHMgbidlc3QgcGFzIGF0dGVpbnQsIGlsIGVzdCBhdXNzaSBwcm9wb3PDqSBkJ2Fqb3V0ZXIgdW4gbm91dmVsIMOpbMOpbWVudC5cbi8vLyBTaSBwYXMgZCdpZCBwYXNzw6kgcGFyIGwndXJsLCBvbiBhZmZpY2hlIHVuIGZvcm11bGFpcmUgdmlkZSBwZXJtZXR0YW50IGRlIHNhaXNpciB1biBub3V2ZWF1IHF1aXouXG5cbi8vIEZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24gOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiKTtcbmNvbnN0IGNvbmZpZ0lsbHVzdHJhdGlvbnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL2lsbHVzdHJhdGlvbnMuanNcIik7XG5jb25zdCBjb25maWdMaW5rcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvbGlua3MuanNcIik7XG5jb25zdCBjb25maWdRdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXMuanNcIik7XG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuLy8gRm9uY3Rpb25zIDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZW1weUFuZEhpZGVGb3JtLCBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBkYXRlRm9ybWF0LCBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IGFkZE9rTWVzc2FnZSwgZGVsZXRlQnRuVHh0LCBzZXJ2ZXJFcnJvciwgdXBkYXRlQnRuVHh0IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGFkZElsbHVzdHJhdGlvblR4dCwgZGVmYXVsdEFsdCwgaW50cm9Ob0lsbHVzdHJhdGlvbiwgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbiB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9pbGx1c3RyYXRpb25cIik7XG5jb25zdCB7IGFkZExpbmtUeHQsIGRlZmF1bHRWYWx1ZUZvckxpbmssIGludHJvTm9MaW5rLCBpbnRyb1RpdGxlRm9yTGluayB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9saW5rXCIpO1xuY29uc3QgeyBhZGRRdWVzdGlvblR4dCwgaW50cm9Ob1F1ZXN0aW9uLCBpbnRyb1RpdGxlRm9yUXVlc3Rpb24gfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvcXVlc3Rpb25cIik7XG5jb25zdCB7IG5lZWRHcm91cElmUmFuaywgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSwgbmV4dFF1ZXN0aW9ubmFpcmVzTGlzdCwgcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9xdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgeyBuZWVkQmVDb25uZWN0ZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0bk5ld1F1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndhbnROZXdRdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInByZXZpZXdRdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgZGVsZXRlQ2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGV0ZU9rTGFiZWxcIik7XG5jb25zdCBkaXZDcmFzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3Jhc2hcIik7XG5jb25zdCBkaXZJbGx1c3RyYXRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpbGx1c3RyYXRpb25zTGlzdFwiKTtcbmNvbnN0IGRpdkxpbmtzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsaW5rc0xpc3RcIik7XG5jb25zdCBkaXZNYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UXVlc3Rpb25uYWlyZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzTGlzdFwiKTtcbmNvbnN0IGRpdlF1ZXN0aW9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25zTGlzdFwiKTtcbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGRpdlNlYXJjaFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoUmVzdWx0XCIpO1xuY29uc3QgZm9ybUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxpbmtzXCIpO1xuY29uc3QgZm9ybUlsbHVzdHJhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWxsdXN0cmF0aW9uc1wiKTtcbmNvbnN0IGZvcm1RdWVzdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25zXCIpO1xuY29uc3QgZm9ybVF1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzXCIpO1xuY29uc3QgZm9ybVNlYXJjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoXCIpO1xuY29uc3QgaGVscENsYXNzaWZpY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJoZWxwQ2xhc3NpZmljYXRpb25cIik7XG5jb25zdCBoZWxwR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhlbHBHcm91cFwiKTtcbmNvbnN0IGhlbHBQdWJsaXNoaW5nQXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhlbHBQdWJsaXNoaW5nQXRcIik7XG5jb25zdCBpbnB1dENsYXNzaWZpY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjbGFzc2lmaWNhdGlvblwiKTtcbmNvbnN0IGlucHV0R3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdyb3VwXCIpO1xuY29uc3QgaW5wdXRSYW5rSW5Hcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmFua0luR3JvdXBcIik7XG5cbi8vIFZpZGUgZXQgY2FjaGUgdG91cyBsZXMgZm9ybXVsYWlyZXMgYW5uZXhlcyBhdSBxdWVzdGlvbm5haXJlIDpcbmNvbnN0IGhpZGVBbGxGb3JtcyA9ICgpID0+XG57XG4gICAgZW1weUFuZEhpZGVGb3JtKGZvcm1MaW5rKTtcbiAgICBpZihkZWZhdWx0VmFsdWVGb3JMaW5rIT0wKVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFuY2hvclwiKS52YWx1ZT1kZWZhdWx0VmFsdWVGb3JMaW5rO1xuICAgIGVtcHlBbmRIaWRlRm9ybShmb3JtSWxsdXN0cmF0aW9uKTtcbiAgICBlbXB5QW5kSGlkZUZvcm0oZm9ybVF1ZXN0aW9uKTtcbn1cblxuLy8gQWZmaWNoZSBsZXMgZG9ubsOpZXMgZCd1biBsaWVuIGRhbnMgbGUgZm9ybXVsYWlyZSBhZGhvYyA6XG5jb25zdCBzaG93Rm9ybUxpbmtJbmZvcyA9IChMaW5rKSA9Plxue1xuICAgIC8vIE9uIGNvbW1lbmNlIHBhciBjYWNoZXIgZXQgdmlkZXIgdG91cyBsZXMgZm9ybXVsYWlyZXMgYW5uZXhlc1xuICAgIGhpZGVBbGxGb3JtcygpO1xuICAgIC8vIFB1aXMgb24gYWZmaWNoZSBjZWx1aSBjb25jZXJuw6lcbiAgICBmb3JtTGluay5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAvLyArIExlcyBjb250cmFpbnRlcyBkZSBjaGFtcCAmIHZhbGV1cnMgcGFyIGTDqWZhdXQgOlxuICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdMaW5rcy5MaW5rLCBmb3JtTGluayk7XG4gICAgZm9yKGxldCBkYXRhIGluIExpbmspXG4gICAge1xuICAgICAgICBpZihmb3JtTGluay5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIGZvcm1MaW5rLmVsZW1lbnRzW2RhdGFdLnZhbHVlPUxpbmtbZGF0YV07XG4gICAgfVxufVxuXG4vLyBBZmZpY2hlIGxlcyBpbmZvcyBjb25udWVzIGNvbmNlcm5hbnQgbGVzIGxpZW5zIGR1IHF1ZXN0aW9ubmFpcmUgYWZmaWNow6kgOlxuY29uc3Qgc2hvd0xpbmtJbmZvcyA9IChMaW5rcywgdG9rZW4pID0+XG57XG4gICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJoMlwiLCBpbnRyb1RpdGxlRm9yTGluayk7XG4gICAgbGV0IGxpc3RMaW5rcz1cIlwiO1xuICAgIGZvcihsZXQgaSBpbiBMaW5rcylcbiAgICAgICAgbGlzdExpbmtzKz1cIjxsaT48YSBocmVmPSdcIitMaW5rc1tpXS51cmwrXCInIHRhcmdldD0nX2JsYW5rJz5cIitMaW5rc1tpXS5hbmNob3IrXCI8L2E+PGJyPjxhIGhyZWY9JyN1cGRhdGVMaW5rXCIrTGlua3NbaV0uaWQrXCInIGlkPScjdXBkYXRlTGlua1wiK0xpbmtzW2ldLmlkK1wiJyBjbGFzcz0nYnV0dG9uJyA+XCIrdXBkYXRlQnRuVHh0K1wiPC9hPiA8YSBocmVmPScjZGVsZXRlTGlua1wiK0xpbmtzW2ldLmlkK1wiJyBpZD0nI2RlbGV0ZUxpbmtcIitMaW5rc1tpXS5pZCtcIicgY2xhc3M9J2J1dHRvbicgPlwiK2RlbGV0ZUJ0blR4dCtcIjwvYT48L2xpPlwiO1xuICAgIGlmKGxpc3RMaW5rcz09PVwiXCIpXG4gICAgICAgIGxpc3RMaW5rcz1cIjxsaT5cIitpbnRyb05vTGluaytcIjwvbGk+XCI7XG4gICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJ1bFwiLCBsaXN0TGlua3MsIFwiXCIsIFtdLCBcIlwiLCBmYWxzZSk7Ly8gISDDoCBpbnTDqWdyZXIgZCdhYm9yZCBkYW5zIGxlIERPTSBwb3VyIHBvdXZvaXIgYWpvdXRlciBsZXMgTGlzdGVuZXJzIGVuc3VpdGVcbiAgICBmb3IobGV0IGkgaW4gTGlua3MpXG4gICAge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiN1cGRhdGVMaW5rXCIrTGlua3NbaV0uaWQpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaG93Rm9ybUxpbmtJbmZvcyhMaW5rc1tpXSk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2xpbmtzXCIpO1xuICAgICAgICB9KTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjZGVsZXRlTGlua1wiK0xpbmtzW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2hvd0Zvcm1MaW5rSW5mb3MoTGlua3NbaV0pO1xuICAgICAgICAgICAgZm9ybUxpbmsuZWxlbWVudHNbXCJkZWxldGVPa1wiXS52YWx1ZT10cnVlO1xuICAgICAgICAgICAgc2VuZExpbmtGb3JtKHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmKExpbmtzLmxlbmd0aCA8IGNvbmZpZy5uYkxpbmtzTWF4IHx8IGNvbmZpZy5uYkxpbmtzTWF4ID09PSAwKVxuICAgIHtcbiAgICAgICAgbGV0IG5ld0J0bj1cIjxhIGhyZWY9JyNuZXdMaW5rJyBpZD0nbmV3TGluaycgY2xhc3M9J2J1dHRvbic+XCIrYWRkTGlua1R4dCtcIjwvYT5cIjtcbiAgICAgICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJwXCIsIG5ld0J0biwgXCJcIiwgW10sIHsgfSwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld0xpbmtcIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgZm9ybUxpbmsuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBmb3JtTGluay5lbGVtZW50c1tcIlF1ZXN0aW9ubmFpcmVJZFwiXS52YWx1ZT1mb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImlkXCJdLnZhbHVlO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNsaW5rc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdMaW5rcywgZm9ybUxpbmspO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIEVudm9pIGRlcyBkb25uw6llcyBkJ3VuIGxpZW4uXG5jb25zdCBzZW5kTGlua0Zvcm0gPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgZGl2UmVzcG9uc2VMaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VMaW5rXCIpO1xuICAgIGRpdlJlc3BvbnNlTGluay5pbm5lckhUTUw9XCJcIjtcbiAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1MaW5rKTtcbiAgICBjb25zdCB4aHJMaW5rRGF0YXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKCFpc0VtcHR5KGRhdGFzLmRlbGV0ZU9rKSkpXG4gICAgICAgIHhockxpbmtEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdMaW5rcy5saW5rc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhyTGlua0RhdGFzLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ0xpbmtzLmxpbmtzUm91dGUrZGF0YXMuaWQpO1xuICAgIGVsc2VcbiAgICAgICAgeGhyTGlua0RhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdMaW5rcy5saW5rc1JvdXRlKTtcbiAgICB4aHJMaW5rRGF0YXMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBpZiAoKHRoaXMuc3RhdHVzID09PSAyMDAgfHwgdGhpcy5zdGF0dXMgPT09IDIwMSkgJiYgcmVzcG9uc2UubWVzc2FnZSE9dW5kZWZpbmVkICYmIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmUhPXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHNob3dMaW5rSW5mb3MocmVzcG9uc2UucXVlc3Rpb25uYWlyZS5MaW5rcywgdG9rZW4pOy8vIGxlIHNlcnZldXIgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIGxpZW5zXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2xpbmtzTGlzdFwiKTtcbiAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHRva2VuKTsvLyBwZXV0IGF2b2lyIMOpdm9sdcOpIHN1aXZhbnQgY2UgcXVpIHMnZXN0IHBhc3PDqVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZUxpbmssIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlTGluaywgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyTGlua0RhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHhockxpbmtEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit0b2tlbik7XG4gICAgeGhyTGlua0RhdGFzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbn1cblxuLy8gQWZmaWNoZSBsZXMgZG9ubsOpZXMgZCd1bmUgaWxsdXN0cmF0aW9uIGRhbnMgbGUgZm9ybXVsYWlyZSBhZGhvYyA6XG5jb25zdCBzaG93Rm9ybUlsbHVzdHJhdGlvbkluZm9zID0gKElsbHVzdHJhdGlvbikgPT5cbntcbiAgICAvLyBPbiBjb21tZW5jZSBwYXIgY2FjaGVyIGV0IHZpZGVyIHRvdXMgbGVzIGZvcm11bGFpcmVzIGFubmV4ZXNcbiAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAvLyBQdWlzIG9uIGFmZmljaGUgY2VsdWkgY29uY2VybsOpXG4gICAgZm9ybUlsbHVzdHJhdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAvLyArIExlcyBjb250cmFpbnRlcyBkZSBjaGFtcCAmIHZhbGV1cnMgcGFyIGTDqWZhdXRcbiAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnSWxsdXN0cmF0aW9ucy5JbGx1c3RyYXRpb24sIGZvcm1JbGx1c3RyYXRpb24pOyAgICAgICAgICAgICAgXG4gICAgLy8gTWFpcyBsZSBjaGFtcCBmaWxlIG4nZXN0IHBsdXMgcmVxdWlzLCBxdWFuZCB1biBmaWNoaWVyIGV4aXN0ZSBkw6lqw6BcbiAgICBmb3JtSWxsdXN0cmF0aW9uLmVsZW1lbnRzW1wiaW1hZ2VcIl0ucmVtb3ZlQXR0cmlidXRlKFwicmVxdWlyZWRcIik7XG4gICAgZm9yKGxldCBkYXRhIGluIElsbHVzdHJhdGlvbilcbiAgICB7XG4gICAgICAgIGlmKGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICBmb3JtSWxsdXN0cmF0aW9uLmVsZW1lbnRzW2RhdGFdLnZhbHVlPUlsbHVzdHJhdGlvbltkYXRhXTtcbiAgICB9XG59XG5cbi8vIEFmZmljaGUgbGVzIGluZm9zIGNvbm51ZXMgY29uY2VybmFudCBsZXMgaWxsdXN0cmF0aW9ucyBkdSBxdWVzdGlvbm5haXJlIGFmZmljaMOpIDpcbmNvbnN0IHNob3dJbGx1c3RyYXRpb25JbmZvcyA9IChJbGx1c3RyYXRpb25zLCB0b2tlbikgPT5cbntcbiAgICBhZGRFbGVtZW50KGRpdklsbHVzdHJhdGlvbnMsIFwiaDJcIiwgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbik7XG4gICAgbGV0IGxpc3RJbGx1c3RyYXRpb25zPVwiXCI7XG4gICAgZm9yKGxldCBpIGluIElsbHVzdHJhdGlvbnMpXG4gICAgICAgIGxpc3RJbGx1c3RyYXRpb25zKz1cIjxsaT48YSBocmVmPSdcIitjb25maWdUZW1wbGF0ZS5pbGx1c3RyYXRpb25EaXIrSWxsdXN0cmF0aW9uc1tpXS51cmwrXCInIHRhcmdldD0nX2JsYW5rJz48aW1nIHNyYz0nXCIrY29uZmlnVGVtcGxhdGUuaWxsdXN0cmF0aW9uRGlyK0lsbHVzdHJhdGlvbnNbaV0udXJsK1wiJyBhbHQ9J1wiK2RlZmF1bHRBbHQrXCInIHN0eWxlPSdtYXgtaGVpZ2h0OjE1MHB4Jz48L2E+PGJyPjxhIGhyZWY9JyN1cGRhdGVJbGx1c3RyYXRpb25cIitJbGx1c3RyYXRpb25zW2ldLmlkK1wiJyBpZD0nI3VwZGF0ZUlsbHVzdHJhdGlvblwiK0lsbHVzdHJhdGlvbnNbaV0uaWQrXCInIGNsYXNzPSdidXR0b24nPlwiK3VwZGF0ZUJ0blR4dCtcIjwvYT4gPGEgaHJlZj0nI2RlbGV0ZUlsbHVzdHJhdGlvblwiK0lsbHVzdHJhdGlvbnNbaV0uaWQrXCInIGlkPScjZGVsZXRlSWxsdXN0cmF0aW9uXCIrSWxsdXN0cmF0aW9uc1tpXS5pZCtcIicgY2xhc3M9J2J1dHRvbic+XCIrZGVsZXRlQnRuVHh0K1wiPC9hPjwvbGk+XCI7XG4gICAgaWYobGlzdElsbHVzdHJhdGlvbnMgPT09IFwiXCIpXG4gICAgICAgIGxpc3RJbGx1c3RyYXRpb25zPVwiPGxpPlwiK2ludHJvTm9JbGx1c3RyYXRpb24rXCI8L2xpPlwiO1xuICAgIGFkZEVsZW1lbnQoZGl2SWxsdXN0cmF0aW9ucywgXCJ1bFwiLCBsaXN0SWxsdXN0cmF0aW9ucywgXCJcIiwgW10sIFwiXCIsIGZhbHNlKTsvLyAhIMOgIGludMOpZ3JlciBkJ2Fib3JkIGRhbnMgbGUgRE9NIHBvdXIgcG91dm9pciBham91dGVyIGxlcyBMaXN0ZW5lcnMgZW5zdWl0ZVxuICAgIGZvcihsZXQgaSBpbiBJbGx1c3RyYXRpb25zKVxuICAgIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjdXBkYXRlSWxsdXN0cmF0aW9uXCIrSWxsdXN0cmF0aW9uc1tpXS5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtSWxsdXN0cmF0aW9uSW5mb3MoSWxsdXN0cmF0aW9uc1tpXSk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2lsbHVzdHJhdGlvbnNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiNkZWxldGVJbGx1c3RyYXRpb25cIitJbGx1c3RyYXRpb25zW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2hvd0Zvcm1JbGx1c3RyYXRpb25JbmZvcyhJbGx1c3RyYXRpb25zW2ldKTtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbXCJkZWxldGVPa1wiXS52YWx1ZT10cnVlO1xuICAgICAgICAgICAgc2VuZElsbHVzdHJhdGlvbkZvcm0odG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYoSWxsdXN0cmF0aW9ucy5sZW5ndGggPCBjb25maWcubmJJbGx1c3RyYXRpb25zTWF4IHx8IGNvbmZpZy5uYklsbHVzdHJhdGlvbnNNYXggPT09IDApXG4gICAge1xuICAgICAgICBsZXQgbmV3QnRuPVwiPGEgaHJlZj0nI25ld0lsbHVzdHJhdGlvbicgaWQ9J25ld0lsbHVzdHJhdGlvbicgY2xhc3M9J2J1dHRvbic+XCIrYWRkSWxsdXN0cmF0aW9uVHh0K1wiPC9hPlwiO1xuICAgICAgICBhZGRFbGVtZW50KGRpdklsbHVzdHJhdGlvbnMsIFwicFwiLCBuZXdCdG4sIFwiXCIsIFtdLCB7IH0sIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJuZXdJbGx1c3RyYXRpb25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgZm9ybUlsbHVzdHJhdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbXCJRdWVzdGlvbm5haXJlSWRcIl0udmFsdWU9Zm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbXCJpZFwiXS52YWx1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjaWxsdXN0cmF0aW9uc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdJbGx1c3RyYXRpb25zLCBmb3JtSWxsdXN0cmF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyBFbnZvaSBkZXMgZG9ubsOpZXMgZCd1bmUgaWxsdXN0cmF0aW9uLlxuY29uc3Qgc2VuZElsbHVzdHJhdGlvbkZvcm0gPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgZGl2UmVzcG9uc2VJbGx1c3RyYXRpb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZUlsbHVzdHJhdGlvblwiKTtcbiAgICBkaXZSZXNwb25zZUlsbHVzdHJhdGlvbi5pbm5lckhUTUw9XCJcIjtcbiAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1JbGx1c3RyYXRpb24pO1xuICAgIGxldCBkYXRhc1dpdGhGaWxlcz1uZXcgRm9ybURhdGEoZm9ybUlsbHVzdHJhdGlvbik7IC8vIGNhciBpbCBtZSBtYW5xdWUgbGVzIGluZm9ybWF0aW9ucyBkdSBmaWNoaWVyIGF2ZWMgbGEgZm9uY3Rpb24gZ2V0RGF0YXNGcm9tSW5wdXRzXG4gICAgY29uc3QgeGhySWxsdXN0cmF0aW9uRGF0YXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKCFpc0VtcHR5KGRhdGFzLmRlbGV0ZU9rKSkpXG4gICAgICAgIHhocklsbHVzdHJhdGlvbkRhdGFzLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ0lsbHVzdHJhdGlvbnMuaWxsdXN0cmF0aW9uc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhySWxsdXN0cmF0aW9uRGF0YXMub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnSWxsdXN0cmF0aW9ucy5pbGx1c3RyYXRpb25zUm91dGUrZGF0YXMuaWQpO1xuICAgIGVsc2VcbiAgICAgICAgeGhySWxsdXN0cmF0aW9uRGF0YXMub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ0lsbHVzdHJhdGlvbnMuaWxsdXN0cmF0aW9uc1JvdXRlKTtcbiAgICB4aHJJbGx1c3RyYXRpb25EYXRhcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIGlmICgodGhpcy5zdGF0dXMgPT09IDIwMCB8fCB0aGlzLnN0YXR1cyA9PT0gMjAxKSAmJiByZXNwb25zZS5tZXNzYWdlIT11bmRlZmluZWQgJiYgcmVzcG9uc2UucXVlc3Rpb25uYWlyZSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgc2hvd0lsbHVzdHJhdGlvbkluZm9zKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmUuSWxsdXN0cmF0aW9ucywgdG9rZW4pOy8vIGxlIHNlcnZldXIgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIGxpZW5zXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZJbGx1c3RyYXRpb25zLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjaWxsdXN0cmF0aW9uc0xpc3RcIik7XG4gICAgICAgICAgICAgICAgc2hvd05leHRRdWVzdGlvbm5haXJlcyh0b2tlbik7Ly8gcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VJbGx1c3RyYXRpb24sIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlSWxsdXN0cmF0aW9uLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB4aHJJbGx1c3RyYXRpb25EYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit0b2tlbik7XG4gICAgeGhySWxsdXN0cmF0aW9uRGF0YXMuc2VuZChkYXRhc1dpdGhGaWxlcyk7XG59XG5cbi8vIEFmZmljaGUgbGVzIGRvbm7DqWVzIGQndW5lIHF1ZXN0aW9uICsgc2VzIHLDqXBvbnNlcyBwb3NzaWJsZXMgZGFucyBsZSBmb3JtdWxhaXJlIGFkaG9jXG5jb25zdCBzaG93Rm9ybVF1ZXN0aW9uSW5mb3MgPSAoUXVlc3Rpb24pID0+XG57XG4gICAgLy8gT24gY29tbWVuY2UgcGFyIGNhY2hlciBldCB2aWRlciB0b3VzIGxlcyBmb3JtdWxhaXJlcyBhbm5leGVzXG4gICAgaGlkZUFsbEZvcm1zKCk7XG4gICAgLy8gUHVpcyBvbiBhZmZpY2hlIGNlbHVpIGNvbmNlcm7DqVxuICAgIGZvcm1RdWVzdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICBmb3IobGV0IGRhdGEgaW4gUXVlc3Rpb24uUXVlc3Rpb24pXG4gICAge1xuICAgICAgICBpZihmb3JtUXVlc3Rpb24uZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICBmb3JtUXVlc3Rpb24uZWxlbWVudHNbZGF0YV0udmFsdWU9UXVlc3Rpb24uUXVlc3Rpb25bZGF0YV07XG4gICAgfVxuICAgIC8vICsgTGVzIGNvbnRyYWludGVzIGRlIGNoYW1wICYgbGVzIHZhbGV1cnMgcGFyIGTDqWZhdXRcbiAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb24sIGZvcm1RdWVzdGlvbik7ICAgICAgICAgICAgICBcbiAgICBmb3IobGV0IGRhdGEgaW4gUXVlc3Rpb24uQ2hvaWNlcylcbiAgICB7XG4gICAgICAgIGlmKGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImNob2ljZVRleHRcIitkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wiY2hvaWNlVGV4dFwiK2RhdGFdLnZhbHVlPVF1ZXN0aW9uLkNob2ljZXNbZGF0YV0udGV4dDtcbiAgICAgICAgICAgIGlmKFF1ZXN0aW9uLkNob2ljZXNbZGF0YV0uaXNDb3JyZWN0PT10cnVlKVxuICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImNob2ljZUlzQ29ycmVjdFwiK2RhdGFdLmNoZWNrZWQ9dHJ1ZTtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImlkQ2hvaWNlXCIrZGF0YV0udmFsdWU9UXVlc3Rpb24uQ2hvaWNlc1tkYXRhXS5pZDtcbiAgICAgICAgfSAgICAgICAgICAgICAgICBcbiAgICB9XG59XG5cbi8vIEFmZmljaGUgbGVzIGluZm9zIGRlcyBxdWVzdGlvbnMgZHUgcXVpeiBhZmZpY2jDqSA6XG5jb25zdCBzaG93UXVlc3Rpb25JbmZvcyA9IChRdWVzdGlvbnMsIHRva2VuKSA9Plxue1xuICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25zLCBcImgyXCIsIGludHJvVGl0bGVGb3JRdWVzdGlvbik7XG4gICAgbGV0IGxpc3RRdWVzdGlvbnM9XCJcIjtcbiAgICBmb3IobGV0IGkgaW4gUXVlc3Rpb25zKVxuICAgICAgICBsaXN0UXVlc3Rpb25zKz1cIjxsaT5cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24ucmFuaytcIiAtIFwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi50ZXh0K1wiPGJyPjxhIGhyZWY9JyN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCtcIicgaWQ9JyN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCtcIicgY2xhc3M9J2J1dHRvbic+XCIrdXBkYXRlQnRuVHh0K1wiPC9hPiA8YSBocmVmPScjZGVsZXRlUXVlc3Rpb25cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24uaWQrXCInIGlkPScjZGVsZXRlUXVlc3Rpb25cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24uaWQrXCInIGNsYXNzPSdidXR0b24nPlwiK2RlbGV0ZUJ0blR4dCtcIjwvYT48L2xpPlwiO1xuICAgIGlmKGxpc3RRdWVzdGlvbnMgPT09IFwiXCIpXG4gICAgICAgIGxpc3RRdWVzdGlvbnM9XCI8bGk+XCIraW50cm9Ob1F1ZXN0aW9uK1wiPC9saT5cIjtcbiAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ucywgXCJ1bFwiLCBsaXN0UXVlc3Rpb25zLCBcIlwiLCBbXSwgXCJcIiwgZmFsc2UpOy8vIMOgIGludMOpZ3JlciBkJ2Fib3JkIGRhbnMgbGUgRE9NIHBvdXIgcG91dm9pciBham91dGVyIGxlcyBMaXN0ZW5lcnMgZW5zdWl0ZVxuICAgIGZvcihsZXQgaSBpbiBRdWVzdGlvbnMpXG4gICAge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25JbmZvcyhRdWVzdGlvbnNbaV0pO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWVzdGlvbnNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiNkZWxldGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25JbmZvcyhRdWVzdGlvbnNbaV0pO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wiZGVsZXRlT2tcIl0udmFsdWU9dHJ1ZTtcbiAgICAgICAgICAgIHNlbmRRdWVzdGlvbkZvcm0odG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYoUXVlc3Rpb25zLmxlbmd0aCA8IGNvbmZpZy5uYlF1ZXN0aW9uc01heCB8fCBjb25maWcubmJRdWVzdGlvbnNNYXggPT09IDApXG4gICAge1xuICAgICAgICBsZXQgbmV3QnRuPVwiPGEgaHJlZj0nI25ld1F1ZXN0aW9uJyBpZD0nbmV3UXVlc3Rpb24nIGNsYXNzPSdidXR0b24nPlwiK2FkZFF1ZXN0aW9uVHh0K1wiPC9hPlwiO1xuICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ucywgXCJwXCIsIG5ld0J0biwgXCJcIiwgW10sIHsgfSwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld1F1ZXN0aW9uXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcIlF1ZXN0aW9ubmFpcmVJZFwiXS52YWx1ZT1mb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImlkXCJdLnZhbHVlO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wicmFua1wiXS52YWx1ZT0oUXVlc3Rpb25zLmxlbmd0aD09PTApID8gY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb24ucmFuay5kZWZhdWx0VmFsdWUgOiBRdWVzdGlvbnMubGVuZ3RoKzE7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3F1ZXN0aW9uc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdRdWVzdGlvbm5haXJlcy5RdWVzdGlvbiwgZm9ybVF1ZXN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyBFbnZvaSBkZXMgZG9ubsOpZXMgZCd1bmUgcXVlc3Rpb24gZXQgZGUgc2VzIHLDqXBvbnNlLiBQZXV0IMOqdHJlIGfDqW7DqXLDqSBwYXIgbGUgYm91dG9uIHN1Ym1pdCBvdSBwYXIgbGUgbGllbiBcInN1cHByaW1lclwiLlxuY29uc3Qgc2VuZFF1ZXN0aW9uRm9ybSA9ICh0b2tlbikgPT5cbntcbiAgICBjb25zdCBkaXZSZXNwb25zZVF1ZXN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VRdWVzdGlvblwiKTtcbiAgICBkaXZSZXNwb25zZVF1ZXN0aW9uLmlubmVySFRNTD1cIlwiO1xuICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVF1ZXN0aW9uKTtcbiAgICBjb25zdCB4aHJRdWVzdGlvbkRhdGFzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgaWYoIWlzRW1wdHkoZGF0YXMuaWQpICYmICghaXNFbXB0eShkYXRhcy5kZWxldGVPaykpKVxuICAgICAgICB4aHJRdWVzdGlvbkRhdGFzLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLnF1ZXN0aW9uc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhyUXVlc3Rpb25EYXRhcy5vcGVuKFwiUFVUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbnNSb3V0ZStkYXRhcy5pZCk7Ly8gbWlzZSDDoCBqb3VyIGQndW5lIHF1ZXN0aW9uXG4gICAgZWxzZVxuICAgICAgICB4aHJRdWVzdGlvbkRhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbnNSb3V0ZSk7Ly8gbm91dmVsbGUgcXVlc3Rpb25cbiAgICB4aHJRdWVzdGlvbkRhdGFzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKCh0aGlzLnN0YXR1cyA9PT0gMjAwIHx8IHRoaXMuc3RhdHVzID09PSAyMDEpICYmIHJlc3BvbnNlLm1lc3NhZ2UhPXVuZGVmaW5lZCAmJiByZXNwb25zZS5xdWVzdGlvbm5haXJlIT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBzaG93UXVlc3Rpb25JbmZvcyhyZXNwb25zZS5xdWVzdGlvbm5haXJlLlF1ZXN0aW9ucywgdG9rZW4pOy8vIGxlIHNlcnZldXIgbWUgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIHF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25zLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVlc3Rpb25zTGlzdFwiKTtcbiAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHRva2VuKTsvLyBjYXIgcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VRdWVzdGlvbiwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VRdWVzdGlvbiwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyUXVlc3Rpb25EYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB4aHJRdWVzdGlvbkRhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3Rva2VuKTtcbiAgICB4aHJRdWVzdGlvbkRhdGFzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbn1cblxuLy8gQWZmaWNoYW50IGxlcyBpbmZvcyBjb25udWVzIGNvbmNlcm5hbnQgdW4gcXVlc3Rpb25uYWlyZSBldCBzZXMgZMOpcGVuZGFuY2VzXG5jb25zdCBzaG93Rm9ybVF1ZXN0aW9ubmFpcmVJbmZvcyA9IChpZCwgdG9rZW4pID0+XG57XG4gICAgY29uc3QgeGhyR2V0SW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHJHZXRJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbm5haXJlUm91dGVzK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMrXCIvXCIraWQpO1xuICAgIHhockdldEluZm9zLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuUXVlc3Rpb25uYWlyZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUucmVzZXQoKTsvLyBwb3VyIG5lIHBhcyBnYXJkZXIgbGVzIGRvbm7DqWVzIGTDqWrDoCBhZmZpY2jDqWVzIHNpIHZpZGUgZGFucyBjZSBxdWkgZXN0IHJldG91cm7DqVxuICAgICAgICAgICAgICAgIGZvcihsZXQgZGF0YSBpbiByZXNwb25zZS5RdWVzdGlvbm5haXJlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGE9PT1cInB1Ymxpc2hpbmdBdFwiICYmIHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbZGF0YV0hPT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlLmVsZW1lbnRzW2RhdGFdLnZhbHVlPWRhdGVGb3JtYXQocmVzcG9uc2UuUXVlc3Rpb25uYWlyZVtkYXRhXSwgXCJmb3JtXCIpOy8vICEhIHJldm9pciBjYXIgZm9ybWF0IHBvdXZhbnQgcG9zZXIgc291Y2lzIHNpIG5hdmlnYXRldXIgbmUgZ8OocmUgcGFzIGxlcyBjaGFtcHMgZGUgdHlwZSBcImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbZGF0YV0udmFsdWU9cmVzcG9uc2UuUXVlc3Rpb25uYWlyZVtkYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZUNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgfS8vIGFqb3V0ZXIgZ2VzdGlvbiBkZXMgcmV0b3VycyBlbiBlcnJldXIgP1xuICAgICAgICAgICAgaWYocmVzcG9uc2UuVGFncyAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGNsYXNzaWZpY2F0aW9uPVwiXCI7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlRhZ3MpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihpPT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYXRpb24rPXJlc3BvbnNlLlRhZ3NbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYXRpb24rPVwiLFwiK3Jlc3BvbnNlLlRhZ3NbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbXCJjbGFzc2lmaWNhdGlvblwiXS52YWx1ZT1jbGFzc2lmaWNhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3BvbnNlLkdyb3VwKSlcbiAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImdyb3VwXCJdLnZhbHVlPXJlc3BvbnNlLkdyb3VwLkdyb3VwLnRpdGxlK1wiIChcIityZXNwb25zZS5Hcm91cC5Hcm91cC5pZCtcIilcIjtcbiAgICAgICAgICAgIGRpdkxpbmtzLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgZGl2UXVlc3Rpb25zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgZGl2SWxsdXN0cmF0aW9ucy5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKHJlc3BvbnNlLkxpbmtzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzaG93TGlua0luZm9zKHJlc3BvbnNlLkxpbmtzLCB0b2tlbik7XG4gICAgICAgICAgICBpZihyZXNwb25zZS5RdWVzdGlvbnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbkluZm9zKHJlc3BvbnNlLlF1ZXN0aW9ucywgdG9rZW4pO1xuICAgICAgICAgICAgaWYocmVzcG9uc2UuSWxsdXN0cmF0aW9ucyAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0lsbHVzdHJhdGlvbkluZm9zKHJlc3BvbnNlLklsbHVzdHJhdGlvbnMsIHRva2VuKTtcbiAgICAgICAgICAgIGhlbHBQdWJsaXNoaW5nQXQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjsvLyBpbmZvIHVuaXF1ZW1lbnQgdXRpbGUgcG91ciBcInBsYWNlclwiIHVuIG5vdXZlYXUgcXVpelxuICAgICAgICAgICAgLy8gw6AgcmV2b2lyIDogcmVtcGxhY2VyIGxpZW4gcG91ciB1biBib3V0b24gKyByZXNldCBjb21wbGV0IGR1IGZvcm11bGFpcmUsIHkgY29tcHJpcyBjaGFtcHMgaGlkZGVuIDpcbiAgICAgICAgICAgIGJ0bk5ld1F1ZXN0aW9ubmFpcmUuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBidG5OZXdRdWVzdGlvbm5haXJlLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgY29uZmlnVGVtcGxhdGUucXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSk7XG4gICAgICAgICAgICBidG5QcmV2aWV3UXVlc3Rpb25uYWlyZS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbXCJpc1B1Ymxpc2hlZFwiXSA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5wcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIitpZCtcIi9cIit0b2tlbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBjb25maWcuc2l0ZVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5wdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzK3Jlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbXCJzbHVnXCJdK1wiLmh0bWxcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xufVxuXG4vLyBBZmZpY2hlIGxlcyBxdWVzdGlvbm5haXJlcyBiaWVudMO0dCBwdWJsacOpcy5cbmNvbnN0IHNob3dOZXh0UXVlc3Rpb25uYWlyZXMgPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLnF1ZXN0aW9ubmFpcmVSb3V0ZXMrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyk7XG4gICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZS5xdWVzdGlvbm5haXJlcykpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3RIVE1MPVwiXCIsIGRheVN0ciwgb3B0aW9uc0RheVN0ciA9IHsgd2Vla2RheTogJ2xvbmcnfTtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UucXVlc3Rpb25uYWlyZXMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXlTdHI9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgb3B0aW9uc0RheVN0cikuZm9ybWF0KG5ldyBEYXRlKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmRhdGVQdWJsaXNoaW5nKSk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RIVE1MKz1cIjxsaT5cIitkYXlTdHIrXCIgXCIrZGF0ZUZvcm1hdChyZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5kYXRlUHVibGlzaGluZywgXCJmclwiKStcIjogPGEgaHJlZj0nXCIrY29uZmlnVGVtcGxhdGUucXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZStcIj9pZD1cIityZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5pZCtcIicgaWQ9J3F1ZXN0aW9ubmFpcmVfXCIrcmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uaWQrXCInPlwiK3Jlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLnRpdGxlK1wiPC9hPlwiO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5pc1B1Ymxpc2hhYmxlPT09ZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCIgPHNwYW4gY2xhc3M9J2Vycm9yJz4oXCIrcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCtcIik8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCI8L2xpPlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcImgzXCIsIG5leHRRdWVzdGlvbm5haXJlc0xpc3QucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGhlbHBQdWJsaXNoaW5nQXQsIFwiZW1cIiwgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZStkYXRlRm9ybWF0KG5ldyBEYXRlKHJlc3BvbnNlLmRhdGVOZWVkZWQpLCBcImZyXCIpKTtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcInVsXCIsIGxpc3RIVE1MLCBcIlwiLCBcIlwiLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWVzdGlvbm5haXJlX1wiK3Jlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Zvcm1RdWVzdGlvbm5haXJlSW5mb3MoZS50YXJnZXQuaWQuc3BsaXQoXCJfXCIpWzFdLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3F1ZXN0aW9ubmFpcmVzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Ly8gYWpvdXRlciBnZXN0aW9uIGVycmV1cnMgcmXDp3VlcyBkdSBzZXJ2ZXVyID9cbiAgICAgICAgfVxuICAgIH1cbiAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdG9rZW4pOyBcbiAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMuc2VuZCgpO1xufVxuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7ICAgICAgICBcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcIm1hbmFnZXJcIiwgXCJhZG1pblwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbmVlZEJlQ29ubmVjdGVkLCBjb2xvcjpcImVycm9yXCIgfSwgd2luZG93LmxvY2F0aW9uKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyBNaXNlIMOgIGpvdXIgZHUgbGllbiBcImNvbXB0ZVwiIGR1IGhlYWRlciA6XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgLy8gSW5pdGlhbGlzYXRpb24gZGVzIGZvcm11bGFpcmVzIDpcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdRdWVzdGlvbm5haXJlcywgZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb25uYWlyZSwgZm9ybVF1ZXN0aW9ubmFpcmUpO1xuICAgICAgICAgICAgLy8gVmlkZS9jYWNoZSBsZXMgw6lsw6ltZW50cyBpbnV0aWxlcyBlbiBtb2RlIGNyw6lhdGlvbiA6XG4gICAgICAgICAgICBidG5QcmV2aWV3UXVlc3Rpb25uYWlyZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgZGVsZXRlQ2hlY2tCb3guc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgLy8gU2kgdW4gaWQgZXN0IHBhc3PDqSBwYXIgbCd1cmwsIG9uIGVzc2F5ZSBkJ2FmZmljaGVyIGxlIHF1ZXN0aW9ubmFpcmUgOlxuICAgICAgICAgICAgbGV0IHVybERhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYodXJsRGF0YXMgJiYgdXJsRGF0YXMuaWQhPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0Zvcm1RdWVzdGlvbm5haXJlSW5mb3ModXJsRGF0YXMuaWQsIHVzZXIudG9rZW4pO1xuICAgICAgICAgICAgLy8gbGVzIHByb2NoYWluZXMgcHVibGljYXRpb25zIDpcbiAgICAgICAgICAgIHNob3dOZXh0UXVlc3Rpb25uYWlyZXModXNlci50b2tlbik7XG4gICAgICAgICAgICAvLyBMYW5jZW1lbnQgZCd1bmUgcmVjaGVyY2hlIDpcbiAgICAgICAgICAgIGZvcm1TZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHhoclNlYXJjaCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5zZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmxlbmd0aD09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdEhUTUw9XCI8b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RIVE1MKz1cIjxvcHRpb24gdmFsdWU9J1wiK3Jlc3BvbnNlW2ldLmlkK1wiJz5cIityZXNwb25zZVtpXS50aXRsZStcIjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJzZWxlY3RcIiwgc2VsZWN0SFRNTCwgXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFNlbGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlbGVjdFNlYXJjaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWFyY2hTZWxlY3QudmFsdWUhPT1cIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25uYWlyZUluZm9zKHNlYXJjaFNlbGVjdC52YWx1ZSwgdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBBaWRlIMOgIGxhIHNhaXNpZSBwb3VyIGxlIGNsYXNzZW1lbnQgZHUgcXVpelxuICAgICAgICAgICAgaW5wdXRDbGFzc2lmaWNhdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdzPWlucHV0Q2xhc3NpZmljYXRpb24udmFsdWUuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgIHRhZ3MucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RUYWc9dGFnc1swXS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYobGFzdFRhZy5sZW5ndGggPj0gMilcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhoclNlYXJjaFRhZ3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoVGFncy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy50YWdzU2VhcmNoUm91dGUpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBDbGFzc2lmaWNhdGlvbi5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGhlbHBDbGFzc2lmaWNhdGlvbiwgXCJhXCIsIHJlc3BvbnNlW2ldLm5hbWUsIFwiI3RhZ1wiK3Jlc3BvbnNlW2ldLmlkLCBbXCJpbmZvXCJdLCB7IGhyZWY6XCIjdGFnXCIrcmVzcG9uc2VbaV0uaWQgfSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjdGFnXCIrcmVzcG9uc2VbaV0uaWQpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzWzBdPWUudGFyZ2V0LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENsYXNzaWZpY2F0aW9uLnZhbHVlPXRhZ3Muam9pbihcIixcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscENsYXNzaWZpY2F0aW9uLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3NlYXJjaDogbGFzdFRhZ30pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gQWlkZSDDoCBsYSBzw6lsZWN0aW9uIGQndW4gZ3JvdXBlIHBvdXIgbGUgcXVpelxuICAgICAgICAgICAgaW5wdXRHcm91cC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZVtcIkdyb3VwSWRcIl0udmFsdWU9XCJcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cElucHV0PWlucHV0R3JvdXAudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmKGdyb3VwSW5wdXQubGVuZ3RoID49IGNvbmZpZ1F1ZXN0aW9ubmFpcmVzLnNlYXJjaEdyb3Vwcy5taW5sZW5ndGgpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJTZWFyY2hHcm91cHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoR3JvdXBzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5zZWFyY2hHcm91cHNSb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaEdyb3Vwcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwR3JvdXAuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChoZWxwR3JvdXAsIFwiYVwiLCByZXNwb25zZVtpXS50aXRsZSwgXCIjZ3JvdXBcIityZXNwb25zZVtpXS5pZCwgW1wiaW5mb1wiXSwgeyBocmVmOlwiI2dyb3VwXCIrcmVzcG9uc2VbaV0uaWQgfSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjZ3JvdXBcIityZXNwb25zZVtpXS5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0R3JvdXAudmFsdWU9cmVzcG9uc2VbaV0udGl0bGUrXCIgKFwiK3Jlc3BvbnNlW2ldLmlkK1wiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlW1wiR3JvdXBJZFwiXS52YWx1ZT1yZXNwb25zZVtpXS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXNwb25zZVtpXS5tYXhSYW5rKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRSYW5rSW5Hcm91cC52YWx1ZT1yZXNwb25zZVtpXS5tYXhSYW5rKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFJhbmtJbkdyb3VwLnZhbHVlPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscEdyb3VwLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoR3JvdXBzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hHcm91cHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaEdyb3Vwcy5zZW5kKEpTT04uc3RyaW5naWZ5KHtzZWFyY2hHcm91cHM6IGdyb3VwSW5wdXR9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFRyYWl0ZW1lbnQgZGUgbCdlbnZvaSBkdSBmb3JtdWxhaXJlIGRlcyBpbmZvcyBkZSBiYXNlIGR1IHF1aXpcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGl2UmVzcG9uc2UuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhmb3JtUXVlc3Rpb25uYWlyZSk7XG4gICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkoZGF0YXMucmFua0luR3JvdXApICYmIGlzRW1wdHkoZGF0YXMuR3JvdXBJZCkpXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBuZWVkR3JvdXBJZlJhbmssIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihpc0VtcHR5KGRhdGFzLnJhbmtJbkdyb3VwKSAmJiAhaXNFbXB0eShkYXRhcy5Hcm91cElkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnJhbmtJbkdyb3VwPTE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhoclF1ZXN0aW9ubmFpcmVEYXRhcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKGRhdGFzLmRlbGV0ZU9rIT09dW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbm5haXJlUm91dGVzK1wiL1wiK2RhdGFzLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighaXNFbXB0eShkYXRhcy5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIitkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIik7XG4gICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGFkZE9rTWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLmlkPXJlc3BvbnNlLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHVzZXIudG9rZW4pOy8vIHBldXQgYXZvaXIgw6l2b2x1w6kgc3VpdmFudCBjZSBxdWkgcydlc3QgcGFzc8OpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dOZXh0UXVlc3Rpb25uYWlyZXModXNlci50b2tlbik7Ly8gcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rID09PSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZXJyb3JzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25uYWlyZUluZm9zKGRhdGFzLmlkLCB1c2VyLnRva2VuKTsvLyBvbiBhY3R1YWxpc2UgbGVzIGRvbm7DqWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZS5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZMaW5rcy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2SWxsdXN0cmF0aW9ucy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2UXVlc3Rpb25zLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybUxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBzZW5kTGlua0Zvcm0odXNlci50b2tlbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBzZW5kSWxsdXN0cmF0aW9uRm9ybSh1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2VuZFF1ZXN0aW9uRm9ybSh1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7XG5oZWxsb0RldigpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgPSAoaW5wdXRzQ29uZiwgbXlGb3JtKSA9Plxue1xuICAgIGZvcihsZXQgaSBpbiBteUZvcm0uZWxlbWVudHMpXG4gICAge1xuICAgICAgICBpZighaXNFbXB0eShteUZvcm0uZWxlbWVudHNbaV0uaWQpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgaWRJbnB1dD1teUZvcm0uZWxlbWVudHNbaV0uaWQ7XG4gICAgICAgICAgICBpZihpbnB1dHNDb25mW2lkSW5wdXRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBpbnB1dEhUTUw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIGluIGlucHV0c0NvbmZbaWRJbnB1dF0pXG4gICAgICAgICAgICAgICAgICAgIGlucHV0SFRNTC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBpbnB1dHNDb25mW2lkSW5wdXRdW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vLyBSw6ljdXDDqHJlIHRvdXRlcyBsZXMgdmFsZXVycyBkZSBjaGFtcHMgZW4gb21ldHRhbnQgbGVzIGNoZWNrYm94IG5vbiBjb2Now6llcywgZXRjLlxuZXhwb3J0IGNvbnN0IGdldERhdGFzRnJvbUlucHV0cyA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZGF0YXM9e307XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgZGF0YXNbZW50cmllWzBdXT1lbnRyaWVbMV07XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBWaWRlIHRvdXMgbGVzIGNoYW1wcyBkJ3VuIGZvcm11bGFpcmUsIHkgY29tcHJpcyBoaWRkZW4sIGNoZWNrYm94LCBldGMuXG4vLyBSZXZvaXIgcG91ciBsZXMgc2VsZWN0XG5leHBvcnQgY29uc3QgZW1weUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgIHtcbiAgICAgICAgaWYobXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJjaGVja2JveFwiIHx8IG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwicmFkaW9cIilcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnZhbHVlPVwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8gVmlkZSBldCBjYWNoZSBsZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgZW1weUFuZEhpZGVGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBlbXB5Rm9ybShteUZvcm0pO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbGx1c3RyYXRpb25zLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvaW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9saW5rcy5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL2lsbHVzdHJhdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9saW5rJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9uJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3F1ZXN0aW9ubmFpcmUkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvdXNlciQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9pbGx1c3RyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvbGluay5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9xdWVzdGlvbm5haXJlLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsiaW5zdGFuY2UiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImlsbHVzdHJhdGlvbnNSb3V0ZSIsIklsbHVzdHJhdGlvbiIsImFsdCIsIm1heGxlbmd0aCIsInRpdGxlIiwiY2FwdGlvbiIsImltYWdlIiwicmVxdWlyZWQiLCJhY2NlcHQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJqb2luIiwiZGlySWxsdXN0cmF0aW9uc1RtcCIsImRpcklsbHVzdHJhdGlvbnMiLCJ1c2VycyIsInF1ZXN0aW9ubmFpcmVzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibGlua3NSb3V0ZSIsIkxpbmsiLCJ1cmwiLCJhbmNob3IiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFkZGVkT2tNZXNzYWdlIiwiYWRkSWxsdXN0cmF0aW9uVHh0IiwiZGVmYXVsdEFsdCIsImRlbGV0ZWRPa01lc3NhZ2UiLCJpbnRyb05vSWxsdXN0cmF0aW9uIiwiaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbiIsIm5lZWRHb29kRmlsZSIsIm5lZWRHb29kTG9uZ0FsdCIsIm5lZWRHb29kTG9uZ0NhcHRpb24iLCJuZWVkR29vZExvbmdUaXRsZSIsIm5lZWRHb29kTG9uZ1VybCIsIm5lZWRNYXhJbGx1c3RyYXRpb25zRm9yUXVlc3Rpb25uYWlyZSIsIm5lZWRRdWVzdGlvbm5haXJlRm9ySWxsdXN0cmF0aW9uIiwibmVlZFVuaXF1ZVVybCIsIm5lZWRVcmwiLCJub3RGb3VuZCIsInVwZGF0ZWRPa01lc3NhZ2UiLCJhZGRMaW5rVHh0IiwiZGVmYXVsdFZhbHVlRm9yTGluayIsImludHJvTm9MaW5rIiwiaW50cm9UaXRsZUZvckxpbmsiLCJuZWVkQW5jaG9yIiwibmVlZEdvb2RMb25nQW5jaG9yIiwibmVlZE1heExpbmtzRm9yUXVlc3Rpb25uYWlyZSIsIm5lZWROb3RUb29Mb25nVXJsIiwibmVlZFF1ZXN0aW9ubmFpcmUiLCJuZWVkVmFsaWRVcmwiLCJhZGRRdWVzdGlvblR4dCIsImludHJvTm9RdWVzdGlvbiIsImludHJvVGl0bGVGb3JRdWVzdGlvbiIsIm5lZWRNYXhRdWVzdGlvbnMiLCJuZWVkTm90VG9vTG9uZ1RleHQiLCJuZWVkTnVtYmVyRm9yUmFuayIsIm5lZWRUZXh0IiwiYnRuU2VuZFJlc3BvbnNlIiwiYnRuU2hhcmVRdWl6VHh0IiwiYnRuU2hhcmVRdWl6TWFpbEJvZHkiLCJidG5TaG93UXVlc3Rpb25uYWlyZSIsImNvcnJlY3RBbnN3ZXJUeHQiLCJlc3RpbWF0ZWRUaW1lIiwiZXN0aW1hdGVkVGltZU9wdGlvbiIsInNob3J0IiwibWVkaXVtIiwibG9uZyIsImV4cGxhbmF0aW9uQmVmb3JlVHh0IiwiaGF2ZUJlZW5QdWJsaXNoZWQiLCJoYXZlQmVlblJlZ2VuZXJhdGVkIiwibGFzdFVwZGF0ZWQiLCJsaW5rR29Ub05leHRFbGVtZW50IiwibGlua0dvVG9RdWl6IiwibmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZSIsIm5lZWRFc3RpbWF0ZWRUaW1lIiwibmVlZEdyb3VwSWZSYW5rIiwibmVlZEludHJvZHVjdGlvbiIsIm5lZWRLbm93SWZJc1B1Ymxpc2hlZCIsIm5lZWRMYW5ndWFnZSIsIm5lZWROb3RUb29Mb25nVGl0bGUiLCJuZWVkVGl0bGUiLCJuZXh0RGF0ZVdpdGhvdXRRdWVzdGlvbm5haXJlIiwibmV4dFF1ZXN0aW9ubmFpcmVzTGlzdCIsInF1ZXN0aW9ubmFpcmVzTmFtZSIsInF1ZXN0aW9ubmFpcmVOZWVkQmVDb21wbGV0ZWQiLCJwdWJsaXNoZWRBdCIsInB1Ymxpc2hlZEJ5Iiwic2VhcmNoUXVlc3Rpb25uYWlyZVJlc3VsdFRpdGxlIiwic2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCIsInNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoUmVzdWx0Iiwid3JvbmdBbnN3ZXJUeHQiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsImlzRW1wdHkiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJ0cmltSWZOb3ROdWxsIiwibXlTdHJpbmciLCJzaG9ydGVuSWZMb25nZXJUaGFuIiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwicmVwbGFjZUFsbCIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWciLCJjb25maWdJbGx1c3RyYXRpb25zIiwiY29uZmlnTGlua3MiLCJjb25maWdRdWVzdGlvbm5haXJlcyIsImNvbmZpZ1RlbXBsYXRlIiwiYnRuTmV3UXVlc3Rpb25uYWlyZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJidG5QcmV2aWV3UXVlc3Rpb25uYWlyZSIsImRlbGV0ZUNoZWNrQm94IiwiZGl2Q3Jhc2giLCJkaXZJbGx1c3RyYXRpb25zIiwiZGl2TGlua3MiLCJkaXZNYWluIiwiZGl2TWVzc2FnZSIsImRpdlF1ZXN0aW9ubmFpcmVzIiwiZGl2UXVlc3Rpb25zIiwiZGl2UmVzcG9uc2UiLCJkaXZTZWFyY2hSZXN1bHQiLCJmb3JtTGluayIsImZvcm1JbGx1c3RyYXRpb24iLCJmb3JtUXVlc3Rpb24iLCJmb3JtUXVlc3Rpb25uYWlyZSIsImZvcm1TZWFyY2giLCJoZWxwQ2xhc3NpZmljYXRpb24iLCJoZWxwR3JvdXAiLCJoZWxwUHVibGlzaGluZ0F0IiwiaW5wdXRDbGFzc2lmaWNhdGlvbiIsImlucHV0R3JvdXAiLCJpbnB1dFJhbmtJbkdyb3VwIiwiaGlkZUFsbEZvcm1zIiwiZW1weUFuZEhpZGVGb3JtIiwic2hvd0Zvcm1MaW5rSW5mb3MiLCJzdHlsZSIsImRpc3BsYXkiLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJkYXRhIiwiZWxlbWVudHMiLCJzaG93TGlua0luZm9zIiwiTGlua3MiLCJ0b2tlbiIsImFkZEVsZW1lbnQiLCJsaXN0TGlua3MiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0Iiwid2luZG93IiwibG9jYXRpb24iLCJhc3NpZ24iLCJzZW5kTGlua0Zvcm0iLCJuZXdCdG4iLCJkaXZSZXNwb25zZUxpbmsiLCJpbm5lckhUTUwiLCJkYXRhcyIsImdldERhdGFzRnJvbUlucHV0cyIsInhockxpbmtEYXRhcyIsIlhNTEh0dHBSZXF1ZXN0IiwiZGVsZXRlT2siLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsInN0YXR1cyIsIm1lc3NhZ2UiLCJxdWVzdGlvbm5haXJlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2hvd05leHRRdWVzdGlvbm5haXJlcyIsImVycm9ycyIsInNldFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwic3RyaW5naWZ5Iiwic2hvd0Zvcm1JbGx1c3RyYXRpb25JbmZvcyIsInJlbW92ZUF0dHJpYnV0ZSIsInNob3dJbGx1c3RyYXRpb25JbmZvcyIsIklsbHVzdHJhdGlvbnMiLCJsaXN0SWxsdXN0cmF0aW9ucyIsInNlbmRJbGx1c3RyYXRpb25Gb3JtIiwiZGl2UmVzcG9uc2VJbGx1c3RyYXRpb24iLCJkYXRhc1dpdGhGaWxlcyIsIkZvcm1EYXRhIiwieGhySWxsdXN0cmF0aW9uRGF0YXMiLCJzaG93Rm9ybVF1ZXN0aW9uSW5mb3MiLCJDaG9pY2VzIiwiaXNDb3JyZWN0IiwiY2hlY2tlZCIsInNob3dRdWVzdGlvbkluZm9zIiwiUXVlc3Rpb25zIiwibGlzdFF1ZXN0aW9ucyIsInNlbmRRdWVzdGlvbkZvcm0iLCJkaXZSZXNwb25zZVF1ZXN0aW9uIiwieGhyUXVlc3Rpb25EYXRhcyIsInNob3dGb3JtUXVlc3Rpb25uYWlyZUluZm9zIiwieGhyR2V0SW5mb3MiLCJyZXNldCIsIlRhZ3MiLCJjbGFzc2lmaWNhdGlvbiIsInNldEF0dHJpYnV0ZSIsInhock5leHRRdWVzdGlvbm5haXJlcyIsImxpc3RIVE1MIiwiZGF5U3RyIiwib3B0aW9uc0RheVN0ciIsIndlZWtkYXkiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJmb3JtYXQiLCJkYXRlUHVibGlzaGluZyIsImlzUHVibGlzaGFibGUiLCJkYXRlTmVlZGVkIiwidGFyZ2V0Iiwic3BsaXQiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJjb2xvciIsImdldExvY2FseSIsInJlbW92ZUxvY2FseSIsInVzZXIiLCJ1cGRhdGVBY2NvdW50TGluayIsInVybERhdGFzIiwiZ2V0VXJsUGFyYW1zIiwieGhyU2VhcmNoIiwic2VsZWN0SFRNTCIsInNlYXJjaFNlbGVjdCIsInRhZ3MiLCJyZXZlcnNlIiwibGFzdFRhZyIsInhoclNlYXJjaFRhZ3MiLCJncm91cElucHV0IiwieGhyU2VhcmNoR3JvdXBzIiwibWF4UmFuayIsInJhbmtJbkdyb3VwIiwiR3JvdXBJZCIsInhoclF1ZXN0aW9ubmFpcmVEYXRhcyIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2Iiwic2F2ZUxvY2FseSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJhcHBlbmRDaGlsZCIsImxvZyIsImxpbmsiLCJob21lUGFnZSIsImlucHV0c0NvbmYiLCJteUZvcm0iLCJpZElucHV0IiwiaW5wdXRIVE1MIiwiYXR0cmlidXRlIiwiZm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJ0eXBlIiwicGFyYW1ldGVycyIsInBhcmFtIiwiZGVjb2RlVVJJIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm5vdyIsInhociIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsTUFBTUEsUUFBUSxHQUFHQyxtQkFBTyxDQUFDLHlDQUFELENBQXhCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJ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L0ksTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxNQUFoQixDQUF1QjZJLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbWFuYWdlUXVlc3Rpb25uYWlyZXMuanNcIik7XG4iLCJjb25zdCBpbnN0YW5jZSA9IHJlcXVpcmUoXCIuL2luc3RhbmNlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIGlsbHVzdHJhdGlvbnNSb3V0ZTogXCIvaWxsdXN0cmF0aW9uL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIElsbHVzdHJhdGlvbiA6XG4gICAge1xuICAgICAgICBhbHQ6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICAgICAgY2FwdGlvbjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgICAgICBpbWFnZTogeyByZXF1aXJlZDogdHJ1ZSwgYWNjZXB0OiBpbnN0YW5jZS5taW1lVHlwZXNGb3JJbGx1c3RyYXRpb24uam9pbihcIixcIikgfVxuICAgIH0sXG4gICAgLy8gZmlsZXMgdXBsb2FkIHRlbXBvcnkgZGlyXG4gICAgZGlySWxsdXN0cmF0aW9uc1RtcCA6IFwidGVtcFwiLFxuICAgIGRpcklsbHVzdHJhdGlvbnM6IFwiZnJvbnQvcHVibGljL2ltZy9xdWl6c1wiXG59OyIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIGxpbmtzUm91dGU6IFwiL2xpbmsvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgTGluayA6XG4gICAge1xuICAgICAgICB1cmw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGFuY2hvcjogeyBtYXhsZW5ndGg6IDE1MCwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH1cbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2lsbHVzdHJhdGlvblwiOiBcIi4uL2xhbmcvZnIvaWxsdXN0cmF0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvaWxsdXN0cmF0aW9uJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9saW5rXCI6IFwiLi4vbGFuZy9mci9saW5rLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvbGluayRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvcXVlc3Rpb25cIjogXCIuLi9sYW5nL2ZyL3F1ZXN0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvcXVlc3Rpb24kXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3F1ZXN0aW9ubmFpcmVcIjogXCIuLi9sYW5nL2ZyL3F1ZXN0aW9ubmFpcmUuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9xdWVzdGlvbm5haXJlJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkZWRPa01lc3NhZ2U6IFwiTCdpbGx1c3RyYXRpb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBhZGRJbGx1c3RyYXRpb25UeHQ6IFwiQWpvdXRlciB1bmUgaWxsdXN0cmF0aW9uXCIsXG4gICAgZGVmYXVsdEFsdCA6IFwiSWxsdXN0cmF0aW9uIGR1IHF1aXpcIixcbiAgICBkZWxldGVkT2tNZXNzYWdlOiBcIkwnaWxsdXN0cmF0aW9uIGEgYmllbiDDqXTDqSBzdXBwcmltw6llLlwiLFxuICAgIGludHJvTm9JbGx1c3RyYXRpb24gOiBcIkF1Y3VuZSBpbGx1c3RyYXRpb24gcG91ciBsJ2luc3RhbnQuXCIsXG4gICAgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbiA6IFwiSWxsdXN0cmF0aW9ucyBkdSBxdWl6XCIsXG4gICAgbmVlZEdvb2RGaWxlIDogXCJWb3RyZSBmaWNoaWVyIG4nYSBwYXMgw6l0w6kgYWNjZXB0w6kuXCIsXG4gICAgbmVlZEdvb2RMb25nQWx0IDogXCJMZSB0ZXh0ZSBkZSBsYSBwcm9wcmnDqXTDqSAnYWx0JyBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRHb29kTG9uZ0NhcHRpb24gOiBcIkxlIHRleHRlIGRlIGxhIGzDqWdlbmRlIGRlIGwnaW1hZ2UgbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkR29vZExvbmdUaXRsZSA6IFwiTGUgdGV4dGUgZGUgbGEgcHJvcHJpw6l0w6kgJ3RpdGxlJyBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRHb29kTG9uZ1VybCA6IFwiTCd1cmwgZGUgbCdpbWFnZSBkb2l0IGNvbnRlbmlyIGVudHJlIDUgZXQgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhJbGx1c3RyYXRpb25zRm9yUXVlc3Rpb25uYWlyZSA6IFwiVm91cyBhdmV6IGTDqWrDoCBhdHRlaW50IGxlIG5vbWJyZSBtYXhpbWFsIGQnaWxsdXN0cmF0aW9ucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUuXCIsXG4gICAgbmVlZFF1ZXN0aW9ubmFpcmVGb3JJbGx1c3RyYXRpb24gOiBcIlRlbnRhdGl2ZSBkJ2Fqb3V0L21pc2Ugw6Agam91ci9zdXBwcmVlc3Npb24gZCd1bmUgaWxsdXN0cmF0aW9uIHBvdXIgdW4gcXVlc3Rpb25uYWlyZSBuJ2F5YW50IHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIG5lZWRVbmlxdWVVcmwgOiBcIkwndXJsIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBhciB1bmUgYXV0cmUgaW1hZ2UuXCIsXG4gICAgbmVlZFVybCA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgdXJsIHBvdXIgbCdpbWFnZS5cIixcbiAgICBub3RGb3VuZDogXCJMJ2VucmVnaXN0cmVtZW50IGRlIGwnaWxsdXN0cmF0aW9uIG4nYSBwYXMgw6l0w6kgdHJvdXbDqSA6IFwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiTCdpbGx1c3RyYXRpb24gYSBiaWVuIMOpdMOpIG1vZGlmacOpZS5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZGVkT2tNZXNzYWdlOiBcIkxlIGxpZW4gYSBiaWVuIMOpdMOpIGFqb3V0w6kuXCIsXG4gICAgYWRkTGlua1R4dDogXCJBam91dGVyIHVuIGxpZW5cIixcbiAgICBkZWZhdWx0VmFsdWVGb3JMaW5rOiBcIkxpcmUgbCdhcnRpY2xlIHN1ciBXaWtpcMOpZGlhLlwiLFxuICAgIGRlbGV0ZWRPa01lc3NhZ2U6IFwiTGUgbGllbiBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGludHJvTm9MaW5rIDogXCJBdWN1biBsaWVuIHBvdXIgbCdpbnN0YW50LlwiLFxuICAgIGludHJvVGl0bGVGb3JMaW5rIDogXCJMZWN0dXJlcyBwcm9wb3PDqWVzXCIsXG4gICAgbmVlZEFuY2hvciA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgYW5jcmUgcG91ciBjZSBsaWVuLlwiLFxuICAgIG5lZWRHb29kTG9uZ0FuY2hvciA6IFwiTWVyY2kgZGUgZm91cm5pciB1bmUgYW5jcmUgcG91ciBjZSBsaWVuIGNvbXB0YW50IGVudHJlIDUgZXQgMTUwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhMaW5rc0ZvclF1ZXN0aW9ubmFpcmUgOiBcIlZvdXMgYXZleiBkw6lqw6AgYXR0ZWludCBsZSBub21icmUgbWF4aW1hbCBkZSBsaWVucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdVcmwgOiBcIk1lcmNpIGRlICBzYWlzaXIgdW4gdXJsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUXVlc3Rpb25uYWlyZSA6IFwiTGUgcXVlc3Rpb25uYWlyZSBkdSBsaWVuIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICBuZWVkVXJsIDogXCJNZXJjaSBkZSAgc2Fpc2lyIGwndXJsIGR1IGxpZW4uXCIsXG4gICAgbmVlZFZhbGlkVXJsIDogXCJNZXJjaSBkZSAgc2Fpc2lyIHVuIHVybCBheWFudCB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5vdEZvdW5kIDogXCJMJ2VucmVnaXN0cmVtZW50IGR1IGxpZW4gbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiTGUgbGllbiBhIGJpZW4gw6l0w6kgbW9kaWZpw6kuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZE9rTWVzc2FnZTogXCJMYSBxdWVzdGlvbiBhIGJpZW4gw6l0w6kgYWpvdXTDqWUuXCIsXG4gICAgYWRkUXVlc3Rpb25UeHQ6IFwiQWpvdXRlciB1bmUgcXVlc3Rpb25cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTGEgcXVlc3Rpb24gYSBiaWVuIMOpdMOpIHN1cHByaW3DqWUuXCIsXG4gICAgaW50cm9Ob1F1ZXN0aW9uOiBcIkF1Y3VuZSBxdWVzdGlvbiBuJ2Egw6l0w6kgc2Fpc2llIHBvdXIgbCdpbnN0YW50XCIsXG4gICAgaW50cm9UaXRsZUZvclF1ZXN0aW9uOiBcIkxlcyBxdWVzdGlvbnMgZW5yZWdpc3Ryw6llc1wiLFxuICAgIG5lZWRNYXhRdWVzdGlvbnM6IFwiVm91cyBhdmV6IGTDqWrDoCBhdHRlaW50IGxlIG5vbWJyZSBtYXhpbWFsIGRlIHF1ZXN0aW9ucyBwb3VyIGNlIHF1ZXN0aW9ubmFpcmUgOiBcIiwgICAgICAgICBcbiAgICBuZWVkTm90VG9vTG9uZ1RleHQ6IFwiTGEgcXVlc3Rpb24gbmUgZG9pdCBwYXMgY29tcHRlciBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTnVtYmVyRm9yUmFuayA6IFwiVm91cyBkZXZleiBmb3VybmlyIHVuIG5vbWJyZSBzdXDDqXJpZXVyIG91IMOpZ2FsIMOgIDEgcG91ciBsZSByYW5nIGRlIGNldHRlIHF1ZXN0aW9uLlwiLCBcbiAgICBuZWVkUXVlc3Rpb25uYWlyZTogXCJMZSBxdWVzdGlvbm5haXJlIGNvbmNlcm7DqSBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgbmVlZFRleHQ6IFwiTWVyY2kgZGUgc2Fpc2lyIGxlIHRleHRlIGRlIGxhIHF1ZXN0aW9uICFcIiwgICBcbiAgICBub3RGb3VuZDogXCJMJ2VucmVnaXN0cmVtZW50IGRlIGxhIHF1ZXN0aW9uIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB1cGRhdGVPa01lc3NhZ2U6IFwiTGEgcXVlc3Rpb24gYSBiaWVuIMOpdMOpIG1vZGlmacOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsLy8gZMOpcGxhY8OpIGRhbnMgZ2VuZXJhbC5qc1xuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIiwvL2lkZW1cbiAgICBidG5TZW5kUmVzcG9uc2U6IFwiVGVzdGV6IHZvcyByw6lwb25zZXMuXCIsXG4gICAgYnRuU2hhcmVRdWl6VHh0OiBcIlBhcnRhZ2VyIHZpYSBcIixcbiAgICBidG5TaGFyZVF1aXpNYWlsQm9keTogXCJCb25qb3VyLCUwQSUwQVZvaWNpJTIwdW4lMjBsaWVuJTIwaW50ZXJuZXQlMjBxdWklMjBkZXZyYWl0JTIwdCdpbnTDqXJlc3NlciA6JTBBXCIsICAgIFxuICAgIGJ0blNob3dRdWVzdGlvbm5haXJlOiBcIlLDqXBvbmRyZSBhdSBxdWl6ICFcIixcbiAgICBjb3JyZWN0QW5zd2VyVHh0OiBcIkJvbm5lIHLDqXBvbnNlXCIsXG4gICAgZXN0aW1hdGVkVGltZTogXCJEdXLDqWUgZGUgbGVjdHVyZSBlc3RpbcOpZSA6IFwiLFxuICAgIGVzdGltYXRlZFRpbWVPcHRpb24gOlxuICAgIHtcbiAgICAgICAgc2hvcnQ6IFwiY291cnRlXCIsXG4gICAgICAgIG1lZGl1bTogXCJtb3llbm5lXCIsXG4gICAgICAgIGxvbmc6IFwibG9uZ3VlXCJcbiAgICB9LFxuICAgIGV4cGxhbmF0aW9uQmVmb3JlVHh0OiBcIkV4dHJhaXQgOlwiLFxuICAgIGhhdmVCZWVuUHVibGlzaGVkIDogXCI6TkIgbm91dmVhdXggcXVlc3Rpb25uYWlyZXMgb250IMOpdMOpIHB1Ymxpw6lzLlwiLFxuICAgIGhhdmVCZWVuUmVnZW5lcmF0ZWQgOiBcIkxlcyBwYWdlcyBIVE1MIGRlICNOQjEgcXVlc3Rpb25uYWlyZXMgb3Ugw6lsw6ltZW50cyBkZSBncm91cGVzLCAjTkIyIHF1aXpzIGdyb3Vww6lzIGV0ICNOQjMgdGjDqG1lcyBvbnQgw6l0w6kgcmVnw6luw6lyw6lzLlwiLFxuICAgIGxhc3RVcGRhdGVkOiBcIkRlcm5pw6hyZSBtaXNlIMOgIGpvdXIsIGxlIFwiLFxuICAgIGxpbmtHb1RvTmV4dEVsZW1lbnQ6IFwiQXJ0aWNsZSBzdWl2YW50XCIsXG4gICAgbGlua0dvVG9RdWl6OiBcIkFjY8OpZGVyIGF1IHF1aXpcIiwgICAgXG4gICAgbmVlZENvcnJlY3RQdWJsaXNoaW5nRGF0ZTogXCJMYSBkYXRlIGRlIHB1YmxpY2F0aW9uIGZvdXJuaWUgbidhIHBhcyB1biBmb3JtYXQgdmFsaWRlLlwiLFxuICAgIG5lZWRFc3RpbWF0ZWRUaW1lOiBcIk1lcmNpIGRlIHPDqWxlY3Rpb25uZXIgdW5lIGVzdGltYXRpb24gZGUgbGEgZHVyw6llIGRlIGNlIHF1aXouXCIsXG4gICAgbmVlZEdyb3VwSWZSYW5rOiBcIlZvdXMgYXZleiBzYWlzaSB1biByYW5nIGRlIGNsYXNzZW1lbnQsIHNhbnMgc8OpbGVjdGlvbm5lciBsZSBncm91cGUgZHUgcXVpei5cIixcbiAgICBuZWVkSW50cm9kdWN0aW9uOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGV4dGUgZCdpbnRyb2R1Y3Rpb24gw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkS25vd0lmSXNQdWJsaXNoZWQ6IFwiSWwgZmF1dCBzYXZvaXIgc2kgY2UgcXVpeiBlc3QgcHVibGnDqS5cIixcbiAgICBuZWVkTGFuZ3VhZ2U6IFwiVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyIGxhIGxhbmd1ZSBkZSBjZSBxdWl6LlwiLFxuICAgIG5lZWROb3RUb29Mb25nVGl0bGU6IFwiTGUgdGl0cmUgZHUgcXVpeiBuZSBkb2l0IHBhcyBjb21wdGVyIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROdW1iZXJGb3JSYW5rOiBcIlZvdXMgZGV2ZXogc2Fpc2lyIHVuIG5vbWJyZSBlbnRpZXIgcG91ciBsZSByYW5nIGRlIGNlIHF1ZXN0aW9ubmFpcmUgZGFucyBzb24gZ3JvdXBlLlwiLCAgICAgICAgICAgICAgXG4gICAgbmVlZFRpdGxlOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gdGl0cmUgw6Agdm90cmUgcXVpei5cIixcbiAgICBuZWVkVW5pcXVlVXJsOiBcIkwndXJsIGR1IHF1aXogZG9pdCDDqnRyZSB1bmlxdWUuXCIsXG4gICAgbmVlZFVybDogXCJNZXJjaSBkZSBmb3VybmlyIGwndXJsIMOgIHZvdHJlIHF1aXouXCIsXG4gICAgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZTogXCJQcm9jaGFpbmUgZGF0ZSBzYW5zIHF1aXogcHJvZ3JhbW3DqSA6IFwiLFxuICAgIG5leHRRdWVzdGlvbm5haXJlc0xpc3Q6IFwiTGVzICNOQiBwcm9jaGFpbnMgcXVpenMgZGV2YW50IMOqdHJlIHB1Ymxpw6lzXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNOYW1lOiBcInF1aXpcIixcbiAgICBxdWVzdGlvbm5haXJlTmVlZEJlQ29tcGxldGVkOiBcIlF1aXogaW5jb21wbGV0XCIsXG4gICAgcHVibGlzaGVkQXQ6IFwiLCBsZVwiLFxuICAgIHB1Ymxpc2hlZEJ5OiBcIlF1aXogcHVibGnDqSBwYXJcIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlUmVzdWx0VGl0bGUgOiBcIlLDqXN1bHRhdCBwb3VyIHZvdHJlIHJlY2hlcmNoZVwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVXaXRoTm9SZXN1bHQgOiBcIkF1Y3VuIHF1aXogbidhIMOpdMOpIHRyb3V2w6kgcG91ciB2b3RyZSByZWNoZXJjaGUuXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhSZXN1bHQgOiBcIklsIHkgYSAjTkIgYXJ0aWNsZSNTIGNvcnJlc3BvbmRhbnQgw6Agdm90cmUgcmVjaGVyY2hlIDpcIixcbiAgICB3cm9uZ0Fuc3dlclR4dDogXCJNYXV2YWlzZSByw6lwb25zZVwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIERFIFNBSVNJUiAvIMOJRElURVIgTEVTIFFVSVpTIEVUIExFVVJTIETDiVBFTkRBTkNFUyAoTElFTlMsIElNQUdFUywgVEFHUywgRVRDLilcblxuLy8vIFbDqXJpZmllIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlIHZlcnMgbGUgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIHNpIGNlIG4nZXN0IHBhcyBsZSBjYXMuXG4vLy8gU2kgYydlc3Qgb2ssIHByb3Bvc2UgdW4gbW90ZXVyIGRlIHJlY2hlcmNoZSBwZXJtZXR0YW50IGRlIGNoZXJjaGVyIHVuIHF1aXpcbi8vLyBTaSB1biBpZCBlc3QgcGFzc8OpIHBhciBsJ3VybCBvbiBhZmZpY2hlIGxlcyBpbmZvcm1hdGlvbnMgZHUgcXVpeiBkYW5zIHVuIGZvcm11bGFpcmUgcGVybWV0dGFudCBkZSBsJ8OpZGl0ZXIvc3VwcHJpbWVyIGF2ZWMgdW5lIGxpc3RlIGRlcyDDqWzDqW1lbnRzIGxpw6lzIChsaWVucywgaWxsdXN0cmF0aW9ucywgcXVlc3Rpb25zLi4uKSBwb3V2YW50IGV1eC1tw6ptZXMgw6p0cmUgw6lkaXTDqXMvc3VwcHJpbcOpcy5cbi8vLyBTaSBsZSBub21icmUgbWF4IGNvbmZpZ3Vyw6kgcG91ciBjaGFjdW4gZGUgc2VzIMOpbMOpbWVudHMgbidlc3QgcGFzIGF0dGVpbnQsIGlsIGVzdCBhdXNzaSBwcm9wb3PDqSBkJ2Fqb3V0ZXIgdW4gbm91dmVsIMOpbMOpbWVudC5cbi8vLyBTaSBwYXMgZCdpZCBwYXNzw6kgcGFyIGwndXJsLCBvbiBhZmZpY2hlIHVuIGZvcm11bGFpcmUgdmlkZSBwZXJtZXR0YW50IGRlIHNhaXNpciB1biBub3V2ZWF1IHF1aXouXG5cbi8vIEZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24gOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiKTtcbmNvbnN0IGNvbmZpZ0lsbHVzdHJhdGlvbnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL2lsbHVzdHJhdGlvbnMuanNcIik7XG5jb25zdCBjb25maWdMaW5rcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvbGlua3MuanNcIik7XG5jb25zdCBjb25maWdRdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXMuanNcIik7XG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuLy8gRm9uY3Rpb25zIDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZW1weUFuZEhpZGVGb3JtLCBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBkYXRlRm9ybWF0LCBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IGFkZE9rTWVzc2FnZSwgZGVsZXRlQnRuVHh0LCBzZXJ2ZXJFcnJvciwgdXBkYXRlQnRuVHh0IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGFkZElsbHVzdHJhdGlvblR4dCwgZGVmYXVsdEFsdCwgaW50cm9Ob0lsbHVzdHJhdGlvbiwgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbiB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9pbGx1c3RyYXRpb25cIik7XG5jb25zdCB7IGFkZExpbmtUeHQsIGRlZmF1bHRWYWx1ZUZvckxpbmssIGludHJvTm9MaW5rLCBpbnRyb1RpdGxlRm9yTGluayB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9saW5rXCIpO1xuY29uc3QgeyBhZGRRdWVzdGlvblR4dCwgaW50cm9Ob1F1ZXN0aW9uLCBpbnRyb1RpdGxlRm9yUXVlc3Rpb24gfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvcXVlc3Rpb25cIik7XG5jb25zdCB7IG5lZWRHcm91cElmUmFuaywgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZSwgbmV4dFF1ZXN0aW9ubmFpcmVzTGlzdCwgcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9xdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgeyBuZWVkQmVDb25uZWN0ZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0bk5ld1F1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndhbnROZXdRdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInByZXZpZXdRdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgZGVsZXRlQ2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGV0ZU9rTGFiZWxcIik7XG5jb25zdCBkaXZDcmFzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3Jhc2hcIik7XG5jb25zdCBkaXZJbGx1c3RyYXRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpbGx1c3RyYXRpb25zTGlzdFwiKTtcbmNvbnN0IGRpdkxpbmtzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsaW5rc0xpc3RcIik7XG5jb25zdCBkaXZNYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLWNvbnRlbnRcIik7XG5jb25zdCBkaXZNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtZXNzYWdlXCIpO1xuY29uc3QgZGl2UXVlc3Rpb25uYWlyZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzTGlzdFwiKTtcbmNvbnN0IGRpdlF1ZXN0aW9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25zTGlzdFwiKTtcbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGRpdlNlYXJjaFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoUmVzdWx0XCIpO1xuY29uc3QgZm9ybUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxpbmtzXCIpO1xuY29uc3QgZm9ybUlsbHVzdHJhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWxsdXN0cmF0aW9uc1wiKTtcbmNvbnN0IGZvcm1RdWVzdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25zXCIpO1xuY29uc3QgZm9ybVF1ZXN0aW9ubmFpcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVzXCIpO1xuY29uc3QgZm9ybVNlYXJjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoXCIpO1xuY29uc3QgaGVscENsYXNzaWZpY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJoZWxwQ2xhc3NpZmljYXRpb25cIik7XG5jb25zdCBoZWxwR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhlbHBHcm91cFwiKTtcbmNvbnN0IGhlbHBQdWJsaXNoaW5nQXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhlbHBQdWJsaXNoaW5nQXRcIik7XG5jb25zdCBpbnB1dENsYXNzaWZpY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjbGFzc2lmaWNhdGlvblwiKTtcbmNvbnN0IGlucHV0R3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdyb3VwXCIpO1xuY29uc3QgaW5wdXRSYW5rSW5Hcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmFua0luR3JvdXBcIik7XG5cbi8vIFZpZGUgZXQgY2FjaGUgdG91cyBsZXMgZm9ybXVsYWlyZXMgYW5uZXhlcyBhdSBxdWVzdGlvbm5haXJlIDpcbmNvbnN0IGhpZGVBbGxGb3JtcyA9ICgpID0+XG57XG4gICAgZW1weUFuZEhpZGVGb3JtKGZvcm1MaW5rKTtcbiAgICBpZihkZWZhdWx0VmFsdWVGb3JMaW5rIT0wKVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFuY2hvclwiKS52YWx1ZT1kZWZhdWx0VmFsdWVGb3JMaW5rO1xuICAgIGVtcHlBbmRIaWRlRm9ybShmb3JtSWxsdXN0cmF0aW9uKTtcbiAgICBlbXB5QW5kSGlkZUZvcm0oZm9ybVF1ZXN0aW9uKTtcbn1cblxuLy8gQWZmaWNoZSBsZXMgZG9ubsOpZXMgZCd1biBsaWVuIGRhbnMgbGUgZm9ybXVsYWlyZSBhZGhvYyA6XG5jb25zdCBzaG93Rm9ybUxpbmtJbmZvcyA9IChMaW5rKSA9Plxue1xuICAgIC8vIE9uIGNvbW1lbmNlIHBhciBjYWNoZXIgZXQgdmlkZXIgdG91cyBsZXMgZm9ybXVsYWlyZXMgYW5uZXhlc1xuICAgIGhpZGVBbGxGb3JtcygpO1xuICAgIC8vIFB1aXMgb24gYWZmaWNoZSBjZWx1aSBjb25jZXJuw6lcbiAgICBmb3JtTGluay5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAvLyArIExlcyBjb250cmFpbnRlcyBkZSBjaGFtcCAmIHZhbGV1cnMgcGFyIGTDqWZhdXQgOlxuICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdMaW5rcy5MaW5rLCBmb3JtTGluayk7XG4gICAgZm9yKGxldCBkYXRhIGluIExpbmspXG4gICAge1xuICAgICAgICBpZihmb3JtTGluay5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIGZvcm1MaW5rLmVsZW1lbnRzW2RhdGFdLnZhbHVlPUxpbmtbZGF0YV07XG4gICAgfVxufVxuXG4vLyBBZmZpY2hlIGxlcyBpbmZvcyBjb25udWVzIGNvbmNlcm5hbnQgbGVzIGxpZW5zIGR1IHF1ZXN0aW9ubmFpcmUgYWZmaWNow6kgOlxuY29uc3Qgc2hvd0xpbmtJbmZvcyA9IChMaW5rcywgdG9rZW4pID0+XG57XG4gICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJoMlwiLCBpbnRyb1RpdGxlRm9yTGluayk7XG4gICAgbGV0IGxpc3RMaW5rcz1cIlwiO1xuICAgIGZvcihsZXQgaSBpbiBMaW5rcylcbiAgICAgICAgbGlzdExpbmtzKz1cIjxsaT48YSBocmVmPSdcIitMaW5rc1tpXS51cmwrXCInIHRhcmdldD0nX2JsYW5rJz5cIitMaW5rc1tpXS5hbmNob3IrXCI8L2E+PGJyPjxhIGhyZWY9JyN1cGRhdGVMaW5rXCIrTGlua3NbaV0uaWQrXCInIGlkPScjdXBkYXRlTGlua1wiK0xpbmtzW2ldLmlkK1wiJyBjbGFzcz0nYnV0dG9uJyA+XCIrdXBkYXRlQnRuVHh0K1wiPC9hPiA8YSBocmVmPScjZGVsZXRlTGlua1wiK0xpbmtzW2ldLmlkK1wiJyBpZD0nI2RlbGV0ZUxpbmtcIitMaW5rc1tpXS5pZCtcIicgY2xhc3M9J2J1dHRvbicgPlwiK2RlbGV0ZUJ0blR4dCtcIjwvYT48L2xpPlwiO1xuICAgIGlmKGxpc3RMaW5rcz09PVwiXCIpXG4gICAgICAgIGxpc3RMaW5rcz1cIjxsaT5cIitpbnRyb05vTGluaytcIjwvbGk+XCI7XG4gICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJ1bFwiLCBsaXN0TGlua3MsIFwiXCIsIFtdLCBcIlwiLCBmYWxzZSk7Ly8gISDDoCBpbnTDqWdyZXIgZCdhYm9yZCBkYW5zIGxlIERPTSBwb3VyIHBvdXZvaXIgYWpvdXRlciBsZXMgTGlzdGVuZXJzIGVuc3VpdGVcbiAgICBmb3IobGV0IGkgaW4gTGlua3MpXG4gICAge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiN1cGRhdGVMaW5rXCIrTGlua3NbaV0uaWQpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaG93Rm9ybUxpbmtJbmZvcyhMaW5rc1tpXSk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2xpbmtzXCIpO1xuICAgICAgICB9KTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjZGVsZXRlTGlua1wiK0xpbmtzW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2hvd0Zvcm1MaW5rSW5mb3MoTGlua3NbaV0pO1xuICAgICAgICAgICAgZm9ybUxpbmsuZWxlbWVudHNbXCJkZWxldGVPa1wiXS52YWx1ZT10cnVlO1xuICAgICAgICAgICAgc2VuZExpbmtGb3JtKHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmKExpbmtzLmxlbmd0aCA8IGNvbmZpZy5uYkxpbmtzTWF4IHx8IGNvbmZpZy5uYkxpbmtzTWF4ID09PSAwKVxuICAgIHtcbiAgICAgICAgbGV0IG5ld0J0bj1cIjxhIGhyZWY9JyNuZXdMaW5rJyBpZD0nbmV3TGluaycgY2xhc3M9J2J1dHRvbic+XCIrYWRkTGlua1R4dCtcIjwvYT5cIjtcbiAgICAgICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJwXCIsIG5ld0J0biwgXCJcIiwgW10sIHsgfSwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld0xpbmtcIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgZm9ybUxpbmsuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBmb3JtTGluay5lbGVtZW50c1tcIlF1ZXN0aW9ubmFpcmVJZFwiXS52YWx1ZT1mb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImlkXCJdLnZhbHVlO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNsaW5rc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdMaW5rcywgZm9ybUxpbmspO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIEVudm9pIGRlcyBkb25uw6llcyBkJ3VuIGxpZW4uXG5jb25zdCBzZW5kTGlua0Zvcm0gPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgZGl2UmVzcG9uc2VMaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VMaW5rXCIpO1xuICAgIGRpdlJlc3BvbnNlTGluay5pbm5lckhUTUw9XCJcIjtcbiAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1MaW5rKTtcbiAgICBjb25zdCB4aHJMaW5rRGF0YXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKCFpc0VtcHR5KGRhdGFzLmRlbGV0ZU9rKSkpXG4gICAgICAgIHhockxpbmtEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdMaW5rcy5saW5rc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhyTGlua0RhdGFzLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ0xpbmtzLmxpbmtzUm91dGUrZGF0YXMuaWQpO1xuICAgIGVsc2VcbiAgICAgICAgeGhyTGlua0RhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdMaW5rcy5saW5rc1JvdXRlKTtcbiAgICB4aHJMaW5rRGF0YXMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBpZiAoKHRoaXMuc3RhdHVzID09PSAyMDAgfHwgdGhpcy5zdGF0dXMgPT09IDIwMSkgJiYgcmVzcG9uc2UubWVzc2FnZSE9dW5kZWZpbmVkICYmIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmUhPXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHNob3dMaW5rSW5mb3MocmVzcG9uc2UucXVlc3Rpb25uYWlyZS5MaW5rcywgdG9rZW4pOy8vIGxlIHNlcnZldXIgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIGxpZW5zXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZMaW5rcywgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2xpbmtzTGlzdFwiKTtcbiAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHRva2VuKTsvLyBwZXV0IGF2b2lyIMOpdm9sdcOpIHN1aXZhbnQgY2UgcXVpIHMnZXN0IHBhc3PDqVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZUxpbmssIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlTGluaywgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyTGlua0RhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIHhockxpbmtEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit0b2tlbik7XG4gICAgeGhyTGlua0RhdGFzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbn1cblxuLy8gQWZmaWNoZSBsZXMgZG9ubsOpZXMgZCd1bmUgaWxsdXN0cmF0aW9uIGRhbnMgbGUgZm9ybXVsYWlyZSBhZGhvYyA6XG5jb25zdCBzaG93Rm9ybUlsbHVzdHJhdGlvbkluZm9zID0gKElsbHVzdHJhdGlvbikgPT5cbntcbiAgICAvLyBPbiBjb21tZW5jZSBwYXIgY2FjaGVyIGV0IHZpZGVyIHRvdXMgbGVzIGZvcm11bGFpcmVzIGFubmV4ZXNcbiAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAvLyBQdWlzIG9uIGFmZmljaGUgY2VsdWkgY29uY2VybsOpXG4gICAgZm9ybUlsbHVzdHJhdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAvLyArIExlcyBjb250cmFpbnRlcyBkZSBjaGFtcCAmIHZhbGV1cnMgcGFyIGTDqWZhdXRcbiAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnSWxsdXN0cmF0aW9ucy5JbGx1c3RyYXRpb24sIGZvcm1JbGx1c3RyYXRpb24pOyAgICAgICAgICAgICAgXG4gICAgLy8gTWFpcyBsZSBjaGFtcCBmaWxlIG4nZXN0IHBsdXMgcmVxdWlzLCBxdWFuZCB1biBmaWNoaWVyIGV4aXN0ZSBkw6lqw6BcbiAgICBmb3JtSWxsdXN0cmF0aW9uLmVsZW1lbnRzW1wiaW1hZ2VcIl0ucmVtb3ZlQXR0cmlidXRlKFwicmVxdWlyZWRcIik7XG4gICAgZm9yKGxldCBkYXRhIGluIElsbHVzdHJhdGlvbilcbiAgICB7XG4gICAgICAgIGlmKGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICBmb3JtSWxsdXN0cmF0aW9uLmVsZW1lbnRzW2RhdGFdLnZhbHVlPUlsbHVzdHJhdGlvbltkYXRhXTtcbiAgICB9XG59XG5cbi8vIEFmZmljaGUgbGVzIGluZm9zIGNvbm51ZXMgY29uY2VybmFudCBsZXMgaWxsdXN0cmF0aW9ucyBkdSBxdWVzdGlvbm5haXJlIGFmZmljaMOpIDpcbmNvbnN0IHNob3dJbGx1c3RyYXRpb25JbmZvcyA9IChJbGx1c3RyYXRpb25zLCB0b2tlbikgPT5cbntcbiAgICBhZGRFbGVtZW50KGRpdklsbHVzdHJhdGlvbnMsIFwiaDJcIiwgaW50cm9UaXRsZUZvcklsbHVzdHJhdGlvbik7XG4gICAgbGV0IGxpc3RJbGx1c3RyYXRpb25zPVwiXCI7XG4gICAgZm9yKGxldCBpIGluIElsbHVzdHJhdGlvbnMpXG4gICAgICAgIGxpc3RJbGx1c3RyYXRpb25zKz1cIjxsaT48YSBocmVmPSdcIitjb25maWdUZW1wbGF0ZS5pbGx1c3RyYXRpb25EaXIrSWxsdXN0cmF0aW9uc1tpXS51cmwrXCInIHRhcmdldD0nX2JsYW5rJz48aW1nIHNyYz0nXCIrY29uZmlnVGVtcGxhdGUuaWxsdXN0cmF0aW9uRGlyK0lsbHVzdHJhdGlvbnNbaV0udXJsK1wiJyBhbHQ9J1wiK2RlZmF1bHRBbHQrXCInIHN0eWxlPSdtYXgtaGVpZ2h0OjE1MHB4Jz48L2E+PGJyPjxhIGhyZWY9JyN1cGRhdGVJbGx1c3RyYXRpb25cIitJbGx1c3RyYXRpb25zW2ldLmlkK1wiJyBpZD0nI3VwZGF0ZUlsbHVzdHJhdGlvblwiK0lsbHVzdHJhdGlvbnNbaV0uaWQrXCInIGNsYXNzPSdidXR0b24nPlwiK3VwZGF0ZUJ0blR4dCtcIjwvYT4gPGEgaHJlZj0nI2RlbGV0ZUlsbHVzdHJhdGlvblwiK0lsbHVzdHJhdGlvbnNbaV0uaWQrXCInIGlkPScjZGVsZXRlSWxsdXN0cmF0aW9uXCIrSWxsdXN0cmF0aW9uc1tpXS5pZCtcIicgY2xhc3M9J2J1dHRvbic+XCIrZGVsZXRlQnRuVHh0K1wiPC9hPjwvbGk+XCI7XG4gICAgaWYobGlzdElsbHVzdHJhdGlvbnMgPT09IFwiXCIpXG4gICAgICAgIGxpc3RJbGx1c3RyYXRpb25zPVwiPGxpPlwiK2ludHJvTm9JbGx1c3RyYXRpb24rXCI8L2xpPlwiO1xuICAgIGFkZEVsZW1lbnQoZGl2SWxsdXN0cmF0aW9ucywgXCJ1bFwiLCBsaXN0SWxsdXN0cmF0aW9ucywgXCJcIiwgW10sIFwiXCIsIGZhbHNlKTsvLyAhIMOgIGludMOpZ3JlciBkJ2Fib3JkIGRhbnMgbGUgRE9NIHBvdXIgcG91dm9pciBham91dGVyIGxlcyBMaXN0ZW5lcnMgZW5zdWl0ZVxuICAgIGZvcihsZXQgaSBpbiBJbGx1c3RyYXRpb25zKVxuICAgIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjdXBkYXRlSWxsdXN0cmF0aW9uXCIrSWxsdXN0cmF0aW9uc1tpXS5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtSWxsdXN0cmF0aW9uSW5mb3MoSWxsdXN0cmF0aW9uc1tpXSk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI2lsbHVzdHJhdGlvbnNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiNkZWxldGVJbGx1c3RyYXRpb25cIitJbGx1c3RyYXRpb25zW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2hvd0Zvcm1JbGx1c3RyYXRpb25JbmZvcyhJbGx1c3RyYXRpb25zW2ldKTtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbXCJkZWxldGVPa1wiXS52YWx1ZT10cnVlO1xuICAgICAgICAgICAgc2VuZElsbHVzdHJhdGlvbkZvcm0odG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYoSWxsdXN0cmF0aW9ucy5sZW5ndGggPCBjb25maWcubmJJbGx1c3RyYXRpb25zTWF4IHx8IGNvbmZpZy5uYklsbHVzdHJhdGlvbnNNYXggPT09IDApXG4gICAge1xuICAgICAgICBsZXQgbmV3QnRuPVwiPGEgaHJlZj0nI25ld0lsbHVzdHJhdGlvbicgaWQ9J25ld0lsbHVzdHJhdGlvbicgY2xhc3M9J2J1dHRvbic+XCIrYWRkSWxsdXN0cmF0aW9uVHh0K1wiPC9hPlwiO1xuICAgICAgICBhZGRFbGVtZW50KGRpdklsbHVzdHJhdGlvbnMsIFwicFwiLCBuZXdCdG4sIFwiXCIsIFtdLCB7IH0sIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJuZXdJbGx1c3RyYXRpb25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgZm9ybUlsbHVzdHJhdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uZWxlbWVudHNbXCJRdWVzdGlvbm5haXJlSWRcIl0udmFsdWU9Zm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbXCJpZFwiXS52YWx1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjaWxsdXN0cmF0aW9uc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdJbGx1c3RyYXRpb25zLCBmb3JtSWxsdXN0cmF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyBFbnZvaSBkZXMgZG9ubsOpZXMgZCd1bmUgaWxsdXN0cmF0aW9uLlxuY29uc3Qgc2VuZElsbHVzdHJhdGlvbkZvcm0gPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgZGl2UmVzcG9uc2VJbGx1c3RyYXRpb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZUlsbHVzdHJhdGlvblwiKTtcbiAgICBkaXZSZXNwb25zZUlsbHVzdHJhdGlvbi5pbm5lckhUTUw9XCJcIjtcbiAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1JbGx1c3RyYXRpb24pO1xuICAgIGxldCBkYXRhc1dpdGhGaWxlcz1uZXcgRm9ybURhdGEoZm9ybUlsbHVzdHJhdGlvbik7IC8vIGNhciBpbCBtZSBtYW5xdWUgbGVzIGluZm9ybWF0aW9ucyBkdSBmaWNoaWVyIGF2ZWMgbGEgZm9uY3Rpb24gZ2V0RGF0YXNGcm9tSW5wdXRzXG4gICAgY29uc3QgeGhySWxsdXN0cmF0aW9uRGF0YXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKCFpc0VtcHR5KGRhdGFzLmRlbGV0ZU9rKSkpXG4gICAgICAgIHhocklsbHVzdHJhdGlvbkRhdGFzLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ0lsbHVzdHJhdGlvbnMuaWxsdXN0cmF0aW9uc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhySWxsdXN0cmF0aW9uRGF0YXMub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnSWxsdXN0cmF0aW9ucy5pbGx1c3RyYXRpb25zUm91dGUrZGF0YXMuaWQpO1xuICAgIGVsc2VcbiAgICAgICAgeGhySWxsdXN0cmF0aW9uRGF0YXMub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ0lsbHVzdHJhdGlvbnMuaWxsdXN0cmF0aW9uc1JvdXRlKTtcbiAgICB4aHJJbGx1c3RyYXRpb25EYXRhcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIGlmICgodGhpcy5zdGF0dXMgPT09IDIwMCB8fCB0aGlzLnN0YXR1cyA9PT0gMjAxKSAmJiByZXNwb25zZS5tZXNzYWdlIT11bmRlZmluZWQgJiYgcmVzcG9uc2UucXVlc3Rpb25uYWlyZSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgc2hvd0lsbHVzdHJhdGlvbkluZm9zKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmUuSWxsdXN0cmF0aW9ucywgdG9rZW4pOy8vIGxlIHNlcnZldXIgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIGxpZW5zXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZJbGx1c3RyYXRpb25zLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjaWxsdXN0cmF0aW9uc0xpc3RcIik7XG4gICAgICAgICAgICAgICAgc2hvd05leHRRdWVzdGlvbm5haXJlcyh0b2tlbik7Ly8gcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VJbGx1c3RyYXRpb24sIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlSWxsdXN0cmF0aW9uLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB4aHJJbGx1c3RyYXRpb25EYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit0b2tlbik7XG4gICAgeGhySWxsdXN0cmF0aW9uRGF0YXMuc2VuZChkYXRhc1dpdGhGaWxlcyk7XG59XG5cbi8vIEFmZmljaGUgbGVzIGRvbm7DqWVzIGQndW5lIHF1ZXN0aW9uICsgc2VzIHLDqXBvbnNlcyBwb3NzaWJsZXMgZGFucyBsZSBmb3JtdWxhaXJlIGFkaG9jXG5jb25zdCBzaG93Rm9ybVF1ZXN0aW9uSW5mb3MgPSAoUXVlc3Rpb24pID0+XG57XG4gICAgLy8gT24gY29tbWVuY2UgcGFyIGNhY2hlciBldCB2aWRlciB0b3VzIGxlcyBmb3JtdWxhaXJlcyBhbm5leGVzXG4gICAgaGlkZUFsbEZvcm1zKCk7XG4gICAgLy8gUHVpcyBvbiBhZmZpY2hlIGNlbHVpIGNvbmNlcm7DqVxuICAgIGZvcm1RdWVzdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICBmb3IobGV0IGRhdGEgaW4gUXVlc3Rpb24uUXVlc3Rpb24pXG4gICAge1xuICAgICAgICBpZihmb3JtUXVlc3Rpb24uZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICBmb3JtUXVlc3Rpb24uZWxlbWVudHNbZGF0YV0udmFsdWU9UXVlc3Rpb24uUXVlc3Rpb25bZGF0YV07XG4gICAgfVxuICAgIC8vICsgTGVzIGNvbnRyYWludGVzIGRlIGNoYW1wICYgbGVzIHZhbGV1cnMgcGFyIGTDqWZhdXRcbiAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb24sIGZvcm1RdWVzdGlvbik7ICAgICAgICAgICAgICBcbiAgICBmb3IobGV0IGRhdGEgaW4gUXVlc3Rpb24uQ2hvaWNlcylcbiAgICB7XG4gICAgICAgIGlmKGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImNob2ljZVRleHRcIitkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wiY2hvaWNlVGV4dFwiK2RhdGFdLnZhbHVlPVF1ZXN0aW9uLkNob2ljZXNbZGF0YV0udGV4dDtcbiAgICAgICAgICAgIGlmKFF1ZXN0aW9uLkNob2ljZXNbZGF0YV0uaXNDb3JyZWN0PT10cnVlKVxuICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImNob2ljZUlzQ29ycmVjdFwiK2RhdGFdLmNoZWNrZWQ9dHJ1ZTtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcImlkQ2hvaWNlXCIrZGF0YV0udmFsdWU9UXVlc3Rpb24uQ2hvaWNlc1tkYXRhXS5pZDtcbiAgICAgICAgfSAgICAgICAgICAgICAgICBcbiAgICB9XG59XG5cbi8vIEFmZmljaGUgbGVzIGluZm9zIGRlcyBxdWVzdGlvbnMgZHUgcXVpeiBhZmZpY2jDqSA6XG5jb25zdCBzaG93UXVlc3Rpb25JbmZvcyA9IChRdWVzdGlvbnMsIHRva2VuKSA9Plxue1xuICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25zLCBcImgyXCIsIGludHJvVGl0bGVGb3JRdWVzdGlvbik7XG4gICAgbGV0IGxpc3RRdWVzdGlvbnM9XCJcIjtcbiAgICBmb3IobGV0IGkgaW4gUXVlc3Rpb25zKVxuICAgICAgICBsaXN0UXVlc3Rpb25zKz1cIjxsaT5cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24ucmFuaytcIiAtIFwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi50ZXh0K1wiPGJyPjxhIGhyZWY9JyN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCtcIicgaWQ9JyN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCtcIicgY2xhc3M9J2J1dHRvbic+XCIrdXBkYXRlQnRuVHh0K1wiPC9hPiA8YSBocmVmPScjZGVsZXRlUXVlc3Rpb25cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24uaWQrXCInIGlkPScjZGVsZXRlUXVlc3Rpb25cIitRdWVzdGlvbnNbaV0uUXVlc3Rpb24uaWQrXCInIGNsYXNzPSdidXR0b24nPlwiK2RlbGV0ZUJ0blR4dCtcIjwvYT48L2xpPlwiO1xuICAgIGlmKGxpc3RRdWVzdGlvbnMgPT09IFwiXCIpXG4gICAgICAgIGxpc3RRdWVzdGlvbnM9XCI8bGk+XCIraW50cm9Ob1F1ZXN0aW9uK1wiPC9saT5cIjtcbiAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ucywgXCJ1bFwiLCBsaXN0UXVlc3Rpb25zLCBcIlwiLCBbXSwgXCJcIiwgZmFsc2UpOy8vIMOgIGludMOpZ3JlciBkJ2Fib3JkIGRhbnMgbGUgRE9NIHBvdXIgcG91dm9pciBham91dGVyIGxlcyBMaXN0ZW5lcnMgZW5zdWl0ZVxuICAgIGZvcihsZXQgaSBpbiBRdWVzdGlvbnMpXG4gICAge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiN1cGRhdGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25JbmZvcyhRdWVzdGlvbnNbaV0pO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNxdWVzdGlvbnNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiNkZWxldGVRdWVzdGlvblwiK1F1ZXN0aW9uc1tpXS5RdWVzdGlvbi5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25JbmZvcyhRdWVzdGlvbnNbaV0pO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wiZGVsZXRlT2tcIl0udmFsdWU9dHJ1ZTtcbiAgICAgICAgICAgIHNlbmRRdWVzdGlvbkZvcm0odG9rZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYoUXVlc3Rpb25zLmxlbmd0aCA8IGNvbmZpZy5uYlF1ZXN0aW9uc01heCB8fCBjb25maWcubmJRdWVzdGlvbnNNYXggPT09IDApXG4gICAge1xuICAgICAgICBsZXQgbmV3QnRuPVwiPGEgaHJlZj0nI25ld1F1ZXN0aW9uJyBpZD0nbmV3UXVlc3Rpb24nIGNsYXNzPSdidXR0b24nPlwiK2FkZFF1ZXN0aW9uVHh0K1wiPC9hPlwiO1xuICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ucywgXCJwXCIsIG5ld0J0biwgXCJcIiwgW10sIHsgfSwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld1F1ZXN0aW9uXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoaWRlQWxsRm9ybXMoKTtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbi5lbGVtZW50c1tcIlF1ZXN0aW9ubmFpcmVJZFwiXS52YWx1ZT1mb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImlkXCJdLnZhbHVlO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmVsZW1lbnRzW1wicmFua1wiXS52YWx1ZT0oUXVlc3Rpb25zLmxlbmd0aD09PTApID8gY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb24ucmFuay5kZWZhdWx0VmFsdWUgOiBRdWVzdGlvbnMubGVuZ3RoKzE7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3F1ZXN0aW9uc1wiKTtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdRdWVzdGlvbm5haXJlcy5RdWVzdGlvbiwgZm9ybVF1ZXN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyBFbnZvaSBkZXMgZG9ubsOpZXMgZCd1bmUgcXVlc3Rpb24gZXQgZGUgc2VzIHLDqXBvbnNlLiBQZXV0IMOqdHJlIGfDqW7DqXLDqSBwYXIgbGUgYm91dG9uIHN1Ym1pdCBvdSBwYXIgbGUgbGllbiBcInN1cHByaW1lclwiLlxuY29uc3Qgc2VuZFF1ZXN0aW9uRm9ybSA9ICh0b2tlbikgPT5cbntcbiAgICBjb25zdCBkaXZSZXNwb25zZVF1ZXN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VRdWVzdGlvblwiKTtcbiAgICBkaXZSZXNwb25zZVF1ZXN0aW9uLmlubmVySFRNTD1cIlwiO1xuICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVF1ZXN0aW9uKTtcbiAgICBjb25zdCB4aHJRdWVzdGlvbkRhdGFzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgaWYoIWlzRW1wdHkoZGF0YXMuaWQpICYmICghaXNFbXB0eShkYXRhcy5kZWxldGVPaykpKVxuICAgICAgICB4aHJRdWVzdGlvbkRhdGFzLm9wZW4oXCJERUxFVEVcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLnF1ZXN0aW9uc1JvdXRlK2RhdGFzLmlkKTtcbiAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgeGhyUXVlc3Rpb25EYXRhcy5vcGVuKFwiUFVUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbnNSb3V0ZStkYXRhcy5pZCk7Ly8gbWlzZSDDoCBqb3VyIGQndW5lIHF1ZXN0aW9uXG4gICAgZWxzZVxuICAgICAgICB4aHJRdWVzdGlvbkRhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbnNSb3V0ZSk7Ly8gbm91dmVsbGUgcXVlc3Rpb25cbiAgICB4aHJRdWVzdGlvbkRhdGFzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKCh0aGlzLnN0YXR1cyA9PT0gMjAwIHx8IHRoaXMuc3RhdHVzID09PSAyMDEpICYmIHJlc3BvbnNlLm1lc3NhZ2UhPXVuZGVmaW5lZCAmJiByZXNwb25zZS5xdWVzdGlvbm5haXJlIT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBzaG93UXVlc3Rpb25JbmZvcyhyZXNwb25zZS5xdWVzdGlvbm5haXJlLlF1ZXN0aW9ucywgdG9rZW4pOy8vIGxlIHNlcnZldXIgbWUgcmV0b3VybmUgdW5lIHZlcnNpb24gYWN0dWFsaXPDqWUgZGUgbGEgbGlzdGUgZGVzIHF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UXVlc3Rpb25zLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjcXVlc3Rpb25zTGlzdFwiKTtcbiAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHRva2VuKTsvLyBjYXIgcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VRdWVzdGlvbiwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2VRdWVzdGlvbiwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyUXVlc3Rpb25EYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB4aHJRdWVzdGlvbkRhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3Rva2VuKTtcbiAgICB4aHJRdWVzdGlvbkRhdGFzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbn1cblxuLy8gQWZmaWNoYW50IGxlcyBpbmZvcyBjb25udWVzIGNvbmNlcm5hbnQgdW4gcXVlc3Rpb25uYWlyZSBldCBzZXMgZMOpcGVuZGFuY2VzXG5jb25zdCBzaG93Rm9ybVF1ZXN0aW9ubmFpcmVJbmZvcyA9IChpZCwgdG9rZW4pID0+XG57XG4gICAgY29uc3QgeGhyR2V0SW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHJHZXRJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbm5haXJlUm91dGVzK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLmdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMrXCIvXCIraWQpO1xuICAgIHhockdldEluZm9zLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuUXVlc3Rpb25uYWlyZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUucmVzZXQoKTsvLyBwb3VyIG5lIHBhcyBnYXJkZXIgbGVzIGRvbm7DqWVzIGTDqWrDoCBhZmZpY2jDqWVzIHNpIHZpZGUgZGFucyBjZSBxdWkgZXN0IHJldG91cm7DqVxuICAgICAgICAgICAgICAgIGZvcihsZXQgZGF0YSBpbiByZXNwb25zZS5RdWVzdGlvbm5haXJlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGE9PT1cInB1Ymxpc2hpbmdBdFwiICYmIHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbZGF0YV0hPT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlLmVsZW1lbnRzW2RhdGFdLnZhbHVlPWRhdGVGb3JtYXQocmVzcG9uc2UuUXVlc3Rpb25uYWlyZVtkYXRhXSwgXCJmb3JtXCIpOy8vICEhIHJldm9pciBjYXIgZm9ybWF0IHBvdXZhbnQgcG9zZXIgc291Y2lzIHNpIG5hdmlnYXRldXIgbmUgZ8OocmUgcGFzIGxlcyBjaGFtcHMgZGUgdHlwZSBcImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbZGF0YV0udmFsdWU9cmVzcG9uc2UuUXVlc3Rpb25uYWlyZVtkYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZUNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgfS8vIGFqb3V0ZXIgZ2VzdGlvbiBkZXMgcmV0b3VycyBlbiBlcnJldXIgP1xuICAgICAgICAgICAgaWYocmVzcG9uc2UuVGFncyAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGNsYXNzaWZpY2F0aW9uPVwiXCI7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlRhZ3MpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihpPT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYXRpb24rPXJlc3BvbnNlLlRhZ3NbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYXRpb24rPVwiLFwiK3Jlc3BvbnNlLlRhZ3NbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybVF1ZXN0aW9ubmFpcmUuZWxlbWVudHNbXCJjbGFzc2lmaWNhdGlvblwiXS52YWx1ZT1jbGFzc2lmaWNhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3BvbnNlLkdyb3VwKSlcbiAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZS5lbGVtZW50c1tcImdyb3VwXCJdLnZhbHVlPXJlc3BvbnNlLkdyb3VwLkdyb3VwLnRpdGxlK1wiIChcIityZXNwb25zZS5Hcm91cC5Hcm91cC5pZCtcIilcIjtcbiAgICAgICAgICAgIGRpdkxpbmtzLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgZGl2UXVlc3Rpb25zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgZGl2SWxsdXN0cmF0aW9ucy5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKHJlc3BvbnNlLkxpbmtzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzaG93TGlua0luZm9zKHJlc3BvbnNlLkxpbmtzLCB0b2tlbik7XG4gICAgICAgICAgICBpZihyZXNwb25zZS5RdWVzdGlvbnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHNob3dRdWVzdGlvbkluZm9zKHJlc3BvbnNlLlF1ZXN0aW9ucywgdG9rZW4pO1xuICAgICAgICAgICAgaWYocmVzcG9uc2UuSWxsdXN0cmF0aW9ucyAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0lsbHVzdHJhdGlvbkluZm9zKHJlc3BvbnNlLklsbHVzdHJhdGlvbnMsIHRva2VuKTtcbiAgICAgICAgICAgIGhlbHBQdWJsaXNoaW5nQXQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjsvLyBpbmZvIHVuaXF1ZW1lbnQgdXRpbGUgcG91ciBcInBsYWNlclwiIHVuIG5vdXZlYXUgcXVpelxuICAgICAgICAgICAgLy8gw6AgcmV2b2lyIDogcmVtcGxhY2VyIGxpZW4gcG91ciB1biBib3V0b24gKyByZXNldCBjb21wbGV0IGR1IGZvcm11bGFpcmUsIHkgY29tcHJpcyBjaGFtcHMgaGlkZGVuIDpcbiAgICAgICAgICAgIGJ0bk5ld1F1ZXN0aW9ubmFpcmUuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBidG5OZXdRdWVzdGlvbm5haXJlLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgY29uZmlnVGVtcGxhdGUucXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSk7XG4gICAgICAgICAgICBidG5QcmV2aWV3UXVlc3Rpb25uYWlyZS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKHJlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbXCJpc1B1Ymxpc2hlZFwiXSA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5wcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIitpZCtcIi9cIit0b2tlbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnRuUHJldmlld1F1ZXN0aW9ubmFpcmUuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBjb25maWcuc2l0ZVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5wdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzK3Jlc3BvbnNlLlF1ZXN0aW9ubmFpcmVbXCJzbHVnXCJdK1wiLmh0bWxcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xufVxuXG4vLyBBZmZpY2hlIGxlcyBxdWVzdGlvbm5haXJlcyBiaWVudMO0dCBwdWJsacOpcy5cbmNvbnN0IHNob3dOZXh0UXVlc3Rpb25uYWlyZXMgPSAodG9rZW4pID0+XG57XG4gICAgY29uc3QgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1F1ZXN0aW9ubmFpcmVzLnF1ZXN0aW9ubmFpcmVSb3V0ZXMrY29uZmlnUXVlc3Rpb25uYWlyZXMuZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyk7XG4gICAgeGhyTmV4dFF1ZXN0aW9ubmFpcmVzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZS5xdWVzdGlvbm5haXJlcykpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3RIVE1MPVwiXCIsIGRheVN0ciwgb3B0aW9uc0RheVN0ciA9IHsgd2Vla2RheTogJ2xvbmcnfTtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UucXVlc3Rpb25uYWlyZXMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXlTdHI9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobGFuZywgb3B0aW9uc0RheVN0cikuZm9ybWF0KG5ldyBEYXRlKHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmRhdGVQdWJsaXNoaW5nKSk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RIVE1MKz1cIjxsaT5cIitkYXlTdHIrXCIgXCIrZGF0ZUZvcm1hdChyZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5kYXRlUHVibGlzaGluZywgXCJmclwiKStcIjogPGEgaHJlZj0nXCIrY29uZmlnVGVtcGxhdGUucXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZStcIj9pZD1cIityZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5pZCtcIicgaWQ9J3F1ZXN0aW9ubmFpcmVfXCIrcmVzcG9uc2UucXVlc3Rpb25uYWlyZXNbaV0uaWQrXCInPlwiK3Jlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLnRpdGxlK1wiPC9hPlwiO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5xdWVzdGlvbm5haXJlc1tpXS5pc1B1Ymxpc2hhYmxlPT09ZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCIgPHNwYW4gY2xhc3M9J2Vycm9yJz4oXCIrcXVlc3Rpb25uYWlyZU5lZWRCZUNvbXBsZXRlZCtcIik8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICBsaXN0SFRNTCs9XCI8L2xpPlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcImgzXCIsIG5leHRRdWVzdGlvbm5haXJlc0xpc3QucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZS5xdWVzdGlvbm5haXJlcy5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGhlbHBQdWJsaXNoaW5nQXQsIFwiZW1cIiwgbmV4dERhdGVXaXRob3V0UXVlc3Rpb25uYWlyZStkYXRlRm9ybWF0KG5ldyBEYXRlKHJlc3BvbnNlLmRhdGVOZWVkZWQpLCBcImZyXCIpKTtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlF1ZXN0aW9ubmFpcmVzLCBcInVsXCIsIGxpc3RIVE1MLCBcIlwiLCBcIlwiLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWVzdGlvbm5haXJlX1wiK3Jlc3BvbnNlLnF1ZXN0aW9ubmFpcmVzW2ldLmlkKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Zvcm1RdWVzdGlvbm5haXJlSW5mb3MoZS50YXJnZXQuaWQuc3BsaXQoXCJfXCIpWzFdLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiI3F1ZXN0aW9ubmFpcmVzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Ly8gYWpvdXRlciBnZXN0aW9uIGVycmV1cnMgcmXDp3VlcyBkdSBzZXJ2ZXVyID9cbiAgICAgICAgfVxuICAgIH1cbiAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdG9rZW4pOyBcbiAgICB4aHJOZXh0UXVlc3Rpb25uYWlyZXMuc2VuZCgpO1xufVxuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7ICAgICAgICBcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcIm1hbmFnZXJcIiwgXCJhZG1pblwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbmVlZEJlQ29ubmVjdGVkLCBjb2xvcjpcImVycm9yXCIgfSwgd2luZG93LmxvY2F0aW9uKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpdk1haW4uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICBpZighaXNFbXB0eShnZXRMb2NhbHkoXCJtZXNzYWdlXCIpKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdk1lc3NhZ2UsIFwicFwiLCBnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLm1lc3NhZ2UsIFwiXCIsIFtnZXRMb2NhbHkoXCJtZXNzYWdlXCIsIHRydWUpLmNvbG9yXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcIm1lc3NhZ2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyBNaXNlIMOgIGpvdXIgZHUgbGllbiBcImNvbXB0ZVwiIGR1IGhlYWRlciA6XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgLy8gSW5pdGlhbGlzYXRpb24gZGVzIGZvcm11bGFpcmVzIDpcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdRdWVzdGlvbm5haXJlcywgZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnUXVlc3Rpb25uYWlyZXMuUXVlc3Rpb25uYWlyZSwgZm9ybVF1ZXN0aW9ubmFpcmUpO1xuICAgICAgICAgICAgLy8gVmlkZS9jYWNoZSBsZXMgw6lsw6ltZW50cyBpbnV0aWxlcyBlbiBtb2RlIGNyw6lhdGlvbiA6XG4gICAgICAgICAgICBidG5QcmV2aWV3UXVlc3Rpb25uYWlyZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgZGVsZXRlQ2hlY2tCb3guc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgIGhpZGVBbGxGb3JtcygpO1xuICAgICAgICAgICAgLy8gU2kgdW4gaWQgZXN0IHBhc3PDqSBwYXIgbCd1cmwsIG9uIGVzc2F5ZSBkJ2FmZmljaGVyIGxlIHF1ZXN0aW9ubmFpcmUgOlxuICAgICAgICAgICAgbGV0IHVybERhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYodXJsRGF0YXMgJiYgdXJsRGF0YXMuaWQhPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0Zvcm1RdWVzdGlvbm5haXJlSW5mb3ModXJsRGF0YXMuaWQsIHVzZXIudG9rZW4pO1xuICAgICAgICAgICAgLy8gbGVzIHByb2NoYWluZXMgcHVibGljYXRpb25zIDpcbiAgICAgICAgICAgIHNob3dOZXh0UXVlc3Rpb25uYWlyZXModXNlci50b2tlbik7XG4gICAgICAgICAgICAvLyBMYW5jZW1lbnQgZCd1bmUgcmVjaGVyY2hlIDpcbiAgICAgICAgICAgIGZvcm1TZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHhoclNlYXJjaCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5zZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmxlbmd0aD09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgc2VhcmNoUXVlc3Rpb25uYWlyZVdpdGhOb1Jlc3VsdCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdEhUTUw9XCI8b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RIVE1MKz1cIjxvcHRpb24gdmFsdWU9J1wiK3Jlc3BvbnNlW2ldLmlkK1wiJz5cIityZXNwb25zZVtpXS50aXRsZStcIjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJzZWxlY3RcIiwgc2VsZWN0SFRNTCwgXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFNlbGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlbGVjdFNlYXJjaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWFyY2hTZWxlY3QudmFsdWUhPT1cIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25uYWlyZUluZm9zKHNlYXJjaFNlbGVjdC52YWx1ZSwgdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBBaWRlIMOgIGxhIHNhaXNpZSBwb3VyIGxlIGNsYXNzZW1lbnQgZHUgcXVpelxuICAgICAgICAgICAgaW5wdXRDbGFzc2lmaWNhdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdzPWlucHV0Q2xhc3NpZmljYXRpb24udmFsdWUuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgIHRhZ3MucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RUYWc9dGFnc1swXS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYobGFzdFRhZy5sZW5ndGggPj0gMilcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhoclNlYXJjaFRhZ3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoVGFncy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy50YWdzU2VhcmNoUm91dGUpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBDbGFzc2lmaWNhdGlvbi5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGhlbHBDbGFzc2lmaWNhdGlvbiwgXCJhXCIsIHJlc3BvbnNlW2ldLm5hbWUsIFwiI3RhZ1wiK3Jlc3BvbnNlW2ldLmlkLCBbXCJpbmZvXCJdLCB7IGhyZWY6XCIjdGFnXCIrcmVzcG9uc2VbaV0uaWQgfSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjdGFnXCIrcmVzcG9uc2VbaV0uaWQpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzWzBdPWUudGFyZ2V0LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENsYXNzaWZpY2F0aW9uLnZhbHVlPXRhZ3Muam9pbihcIixcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscENsYXNzaWZpY2F0aW9uLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hUYWdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoe3NlYXJjaDogbGFzdFRhZ30pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gQWlkZSDDoCBsYSBzw6lsZWN0aW9uIGQndW4gZ3JvdXBlIHBvdXIgbGUgcXVpelxuICAgICAgICAgICAgaW5wdXRHcm91cC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZVtcIkdyb3VwSWRcIl0udmFsdWU9XCJcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cElucHV0PWlucHV0R3JvdXAudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmKGdyb3VwSW5wdXQubGVuZ3RoID49IGNvbmZpZ1F1ZXN0aW9ubmFpcmVzLnNlYXJjaEdyb3Vwcy5taW5sZW5ndGgpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJTZWFyY2hHcm91cHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoR3JvdXBzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5ncm91cFJvdXRlcytjb25maWdRdWVzdGlvbm5haXJlcy5zZWFyY2hHcm91cHNSb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaEdyb3Vwcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwR3JvdXAuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChoZWxwR3JvdXAsIFwiYVwiLCByZXNwb25zZVtpXS50aXRsZSwgXCIjZ3JvdXBcIityZXNwb25zZVtpXS5pZCwgW1wiaW5mb1wiXSwgeyBocmVmOlwiI2dyb3VwXCIrcmVzcG9uc2VbaV0uaWQgfSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIjZ3JvdXBcIityZXNwb25zZVtpXS5pZCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0R3JvdXAudmFsdWU9cmVzcG9uc2VbaV0udGl0bGUrXCIgKFwiK3Jlc3BvbnNlW2ldLmlkK1wiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlW1wiR3JvdXBJZFwiXS52YWx1ZT1yZXNwb25zZVtpXS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXNwb25zZVtpXS5tYXhSYW5rKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRSYW5rSW5Hcm91cC52YWx1ZT1yZXNwb25zZVtpXS5tYXhSYW5rKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFJhbmtJbkdyb3VwLnZhbHVlPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscEdyb3VwLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoR3JvdXBzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgICAgICB4aHJTZWFyY2hHcm91cHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaEdyb3Vwcy5zZW5kKEpTT04uc3RyaW5naWZ5KHtzZWFyY2hHcm91cHM6IGdyb3VwSW5wdXR9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFRyYWl0ZW1lbnQgZGUgbCdlbnZvaSBkdSBmb3JtdWxhaXJlIGRlcyBpbmZvcyBkZSBiYXNlIGR1IHF1aXpcbiAgICAgICAgICAgIGZvcm1RdWVzdGlvbm5haXJlLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGl2UmVzcG9uc2UuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhmb3JtUXVlc3Rpb25uYWlyZSk7XG4gICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkoZGF0YXMucmFua0luR3JvdXApICYmIGlzRW1wdHkoZGF0YXMuR3JvdXBJZCkpXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBuZWVkR3JvdXBJZlJhbmssIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihpc0VtcHR5KGRhdGFzLnJhbmtJbkdyb3VwKSAmJiAhaXNFbXB0eShkYXRhcy5Hcm91cElkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnJhbmtJbkdyb3VwPTE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhoclF1ZXN0aW9ubmFpcmVEYXRhcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKGRhdGFzLmRlbGV0ZU9rIT09dW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdRdWVzdGlvbm5haXJlcy5xdWVzdGlvbm5haXJlUm91dGVzK1wiL1wiK2RhdGFzLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighaXNFbXB0eShkYXRhcy5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIitkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnUXVlc3Rpb25uYWlyZXMucXVlc3Rpb25uYWlyZVJvdXRlcytcIi9cIik7XG4gICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGFkZE9rTWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLmlkPXJlc3BvbnNlLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TmV4dFF1ZXN0aW9ubmFpcmVzKHVzZXIudG9rZW4pOy8vIHBldXQgYXZvaXIgw6l2b2x1w6kgc3VpdmFudCBjZSBxdWkgcydlc3QgcGFzc8OpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2Uuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dOZXh0UXVlc3Rpb25uYWlyZXModXNlci50b2tlbik7Ly8gcGV1dCBhdm9pciDDqXZvbHXDqSBzdWl2YW50IGNlIHF1aSBzJ2VzdCBwYXNzw6lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzZXJ2ZXJFcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rID09PSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZXJyb3JzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtUXVlc3Rpb25uYWlyZUluZm9zKGRhdGFzLmlkLCB1c2VyLnRva2VuKTsvLyBvbiBhY3R1YWxpc2UgbGVzIGRvbm7DqWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtUXVlc3Rpb25uYWlyZS5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZMaW5rcy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2SWxsdXN0cmF0aW9ucy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2UXVlc3Rpb25zLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgICAgIHhoclF1ZXN0aW9ubmFpcmVEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgICAgICB4aHJRdWVzdGlvbm5haXJlRGF0YXMuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybUxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBzZW5kTGlua0Zvcm0odXNlci50b2tlbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcm1JbGx1c3RyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBzZW5kSWxsdXN0cmF0aW9uRm9ybSh1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybVF1ZXN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2VuZFF1ZXN0aW9uRm9ybSh1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7XG5oZWxsb0RldigpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgPSAoaW5wdXRzQ29uZiwgbXlGb3JtKSA9Plxue1xuICAgIGZvcihsZXQgaSBpbiBteUZvcm0uZWxlbWVudHMpXG4gICAge1xuICAgICAgICBpZighaXNFbXB0eShteUZvcm0uZWxlbWVudHNbaV0uaWQpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgaWRJbnB1dD1teUZvcm0uZWxlbWVudHNbaV0uaWQ7XG4gICAgICAgICAgICBpZihpbnB1dHNDb25mW2lkSW5wdXRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBpbnB1dEhUTUw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIGluIGlucHV0c0NvbmZbaWRJbnB1dF0pXG4gICAgICAgICAgICAgICAgICAgIGlucHV0SFRNTC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBpbnB1dHNDb25mW2lkSW5wdXRdW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vLyBSw6ljdXDDqHJlIHRvdXRlcyBsZXMgdmFsZXVycyBkZSBjaGFtcHMgZW4gb21ldHRhbnQgbGVzIGNoZWNrYm94IG5vbiBjb2Now6llcywgZXRjLlxuZXhwb3J0IGNvbnN0IGdldERhdGFzRnJvbUlucHV0cyA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZGF0YXM9e307XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgZGF0YXNbZW50cmllWzBdXT1lbnRyaWVbMV07XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBWaWRlIHRvdXMgbGVzIGNoYW1wcyBkJ3VuIGZvcm11bGFpcmUsIHkgY29tcHJpcyBoaWRkZW4sIGNoZWNrYm94LCBldGMuXG4vLyBSZXZvaXIgcG91ciBsZXMgc2VsZWN0XG5leHBvcnQgY29uc3QgZW1weUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgIHtcbiAgICAgICAgaWYobXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJjaGVja2JveFwiIHx8IG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwicmFkaW9cIilcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnZhbHVlPVwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8gVmlkZSBldCBjYWNoZSBsZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgZW1weUFuZEhpZGVGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBlbXB5Rm9ybShteUZvcm0pO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/manageUsers.app.js b/front/public/JS/manageUsers.app.js index 390170d..a08396f 100644 --- a/front/public/JS/manageUsers.app.js +++ b/front/public/JS/manageUsers.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -662,99 +671,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1674,4 +1662,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC91c2VyJCIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9nZW5lcmFsLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3N1YnNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci91c2VyLmpzIiwid2VicGFjazovLy8uLi90b29scy9tYWluLmpzIiwid2VicGFjazovLy8uLi92aWV3cyBzeW5jIF5cXC5cXC8uKlxcLmpzJCIsIndlYnBhY2s6Ly8vLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL21hbmFnZVVzZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91cmwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQiLCJpbmZvc0V4cGlyYXRlZCIsImluZm9zRXhwaXJhdGVkQWRtaW4iLCJpbmZvc05iRGF5cyIsImluZm9zTmJEYXlzQWRtaW4iLCJpbmZvc1BheW1lbnRzQWRtaW4iLCJpc05vdFZhbGlkZWQiLCJtYWlsRW5kRnJlZVRpbWVCb2R5SFRNTCIsIm1haWxFbmRGcmVlVGltZUJvZHlUeHQiLCJtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IiwibWFpbEVuZEZyZWVUaW1lTWVzc2FnZSIsIm1haWxFbmRGcmVlVGltZVN1YmplY3QiLCJtYWlsRXhwaXJhdGlvbkJvZHlIVE1MIiwibWFpbEV4cGlyYXRpb25Cb2R5VHh0IiwibWFpbEV4cGlyYXRpb25MaW5rVHh0IiwibWFpbEV4cGlyYXRpb25NZXNzYWdlIiwibWFpbEV4cGlyYXRpb25SZWxhdW5jaFR4dCIsIm1haWxFeHBpcmF0aW9uU3ViamVjdCIsIm1haWxOZXdFbGVtZW50Rm9yR3JvdXBUeHQiLCJtYWlsTmV3UXVlc3Rpb25uYWlyZUJvZHlUeHQiLCJtYWlsU3RvcE1haWxMaW5rVHh0IiwibmVlZEtub3dJZk5vdGljZU9rIiwibmVlZEludGVnZXJOdW1iZXJPZkRheXMiLCJuZWVkTWluTnVtYmVyT2ZEYXlzIiwibmVlZE5vdFRvb0xvbmdEYXlzTGlzdCIsIm5lZWROdW1iZXJPZkRheXMiLCJuZWVkVW5pcXVlRGF5c0xpc3QiLCJuZWVkVmFsaWREYXlzTGlzdCIsIm5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIiLCJ1bnN1YnNjcmlwdGlvbk9rIiwidW5zdWJzY3JpcHRpb25GYWlsIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdVc2VycyIsImNvbmZpZ1RlbXBsYXRlIiwiZGl2TWFpbiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZNZXNzYWdlIiwiZGl2UmVzcG9uc2UiLCJkaXZDcmFzaCIsImRpdlN1YnNjcmliZUludHJvIiwiZGl2UGF5bWVudHNJbmZvcyIsImRpdkdvZGNoaWxkc0luZm9zIiwiZm9ybVVzZXIiLCJkZWxldGVDaGVja0JveCIsInZhbGlkYXRpb25DaGVja0JveCIsImJ0bk5ld1VzZXIiLCJ0aW1lRGlmZmVyZW5jZSIsImZvcm1TZWFyY2giLCJkaXZTZWFyY2hSZXN1bHQiLCJoZWxsb0RldiIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsIm1lc3NhZ2UiLCJjb2xvciIsIndpbmRvdyIsImxvY2F0aW9uIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwic3R5bGUiLCJkaXNwbGF5IiwiYWRkRWxlbWVudCIsInJlbW92ZUxvY2FseSIsInNldEF0dHJpYnV0ZXNUb0lucHV0cyIsImVtcHR5VXNlckZvcm0iLCJlbXB5Rm9ybSIsImlubmVySFRNTCIsInBhcmVudE5vZGUiLCJzaG93Rm9ybVVzZXJJbmZvcyIsInhockdldEluZm9zIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsIlVzZXIiLCJtYXBUZXh0IiwiSURfVVNFUiIsIkRBVEVfQ1JFQSIsImRhdGVGb3JtYXQiLCJjcmVhdGVkQXQiLCJEQVRFX1VQREFURSIsInVwZGF0ZWRBdCIsIkRBVEVfQ09OTkVDVElPTiIsImNvbm5lY3RlZEF0Iiwic3Vic2NyaWJlSW50cm8iLCJyZXBsYWNlQWxsIiwiZGF0YSIsImVsZW1lbnRzIiwiY2hlY2tlZCIsIlN1YnNjcmlwdGlvbiIsInJlY2VpcHREYXlzIiwiYmVnaW5TdWJUUyIsImdldFRpbWUiLCJudW1iZXJPZkRheXMiLCJuYkRheXNPayIsInJvdW5kIiwibm93IiwieGhyR2V0UGF5bWVudHNJbmZvcyIsInJlc3BvbnNlUGF5IiwidHh0UGF5bWVudHMiLCJEQVRFX1BBWU1FTlQiLCJBTU9VTlQiLCJhbW91bnQiLCJDTElFTlRfTkFNRSIsImNsaWVudE5hbWUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwidG9rZW4iLCJzZW5kIiwiR29kZmF0aGVySWQiLCJ4aHJHZXRHb2RGYXRoZXJJbmZvcyIsInJlc3BvbnNlR0YiLCJ0eHRHb2RjaGlsZHMiLCJ4aHJHZXRHb2RjaGlsZHMiLCJyZXNwb25zZUdTIiwidXJsRGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJVc2VyRGF0YXMiLCJkZWxldGVPayIsInZhbGlkYXRpb25PayIsImdldFBhc3N3b3JkIiwiQXJyYXkiLCJpc0FycmF5IiwiZXJyb3JzIiwic3RyaW5naWZ5IiwieGhyU2VhcmNoIiwic2VsZWN0SFRNTCIsInNlYXJjaFNlbGVjdCIsImNvbnNvbGUiLCJlcnJvciIsInNhdmVMb2NhbHkiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJsaW5rIiwiaG9tZVBhZ2UiLCJpbnB1dHNDb25mIiwibXlGb3JtIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwidHlwZSIsImVtcHlBbmRIaWRlRm9ybSIsInBhcmFtZXRlcnMiLCJzcGxpdCIsInBhcmFtIiwiZGVjb2RlVVJJIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxD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T0FBakIsRUFBMEI2SSxTQUExQixDQUFaO0FBQ0FFLHFCQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixXQWxDRCxNQW9DQTtBQUNJcEksa0ZBQVksQ0FBQyxNQUFELENBQVo7QUFDQXVJLHdCQUFZLENBQUNOLGNBQUQsRUFBaUI1SSxPQUFqQixFQUEwQjZJLFNBQTFCLENBQVo7QUFDQUUsbUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFNBNUNEOztBQTZDQUksV0FBRyxDQUFDTyxPQUFKLEdBQWMsTUFBTVYsTUFBTSxDQUFDRyxHQUFHLENBQUNRLFVBQUwsQ0FBMUI7O0FBQ0FSLFdBQUcsQ0FBQ3RGLElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU1xRixZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQjVJLE9BQWpCLEVBQTBCNkksU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUN6UCwyREFBTyxDQUFDNEcsT0FBRCxDQUFYLEVBQ0l3RixvRUFBVSxDQUFDLFNBQUQsRUFBWXhGLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQzVHLDJEQUFPLENBQUN5UCxTQUFELENBQVgsRUFDSXJELG9FQUFVLENBQUMsS0FBRCxFQUFRcUQsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDelAsMkRBQU8sQ0FBQ3dQLGNBQUQsQ0FBWCxFQUNJMUksTUFBTSxDQUFDQyxRQUFQLENBQWdCc0osTUFBaEIsQ0FBdUJiLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvbWFuYWdlVXNlcnMuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbWFuYWdlVXNlcnMuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3N1YnNjcmlwdGlvblwiOiBcIi4uL2xhbmcvZnIvc3Vic2NyaXB0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvc3Vic2NyaXB0aW9uJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxsU3Vic2NyaXB0aW9uUHJvY2Vzc2VkIDogXCJUb3VzIGxlcyBhYm9ubsOpcyBvbnQgw6l0w6kgdHJhaXTDqXMgcG91ciBsZSBtb21lbnQuXCIsXG4gICAgaW5mb3NFeHBpcmF0ZWQ6IFwiVm90cmUgYWJvbm5lbWVudCBhIGV4cGlyw6ksIG1haXMgaWwgdm91cyByZXN0ZSBlbmNvcmUgcXVlbHF1ZXMgam91cnMgYXZhbnQgcXVlIHZvdHJlIGNvbXB0ZSBldCB2b3MgZG9ubsOpZXMgbmUgc29pZW50IGNvbXBsw6h0ZW1lbnQgc3VwcHJpbcOpZXMuPGJyPlBvdXIgY2UgZmFpcmUsIHN1aXZleiBzYW5zIHRhcmRlciBsZXMgaW5kaWNhdGlvbnMgY2ktZGVzc291cyA6XCIsXG4gICAgaW5mb3NFeHBpcmF0ZWRBZG1pbjogXCJDZXQgYWJvbm5lbWVudCBhIGV4cGlyw6kuXCIsXG4gICAgaW5mb3NOYkRheXM6IFwiVm90cmUgYWJvbm5lbWVudCBlc3QgZW5jb3JlIHZhbGFibGUgPGI+cGVuZGFudCBOQl9EQVlTIGpvdXJzPC9iPi48YnI+Vm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgcHJvbG9uZ2VyIHZvdHJlIGFib25uZW1lbnQgZW4gc3VpdmFudCBsZXMgaW5kaWNhdGlvbnMgY2ktZGVzc291cyA6XCIsXG4gICAgaW5mb3NOYkRheXNBZG1pbjogXCJDZXQgYWJvbm5lbWVudCBlc3QgZW5jb3JlIHZhbGFibGUgPGI+cGVuZGFudCBOQl9EQVlTIGpvdXJzPC9iPi5cIixcbiAgICBpbmZvc1BheW1lbnRzQWRtaW4gOiBcIkRBVEVfUEFZTUVOVCA6IHBhaWVtZW50IGRlIEFNT1VOVCDigqwgYXUgbm9tIGRlIENMSUVOVF9OQU1FLlwiLFxuICAgIGlzTm90VmFsaWRlZCA6IFwiQ2V0IHV0aWxpc2F0ZXVyIG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS48YnI+Vm91cyBwb3V2ZXogbGUgZmFpcmUgw6Agc2EgcGxhY2UgPGEgaHJlZj0nI3ZhbGlkYXRpb25Payc+ZW4gY29jaGFudCBsYSBjYXNlIGluZGlxdcOpZTwvYT4gZXQgZW5yZWdpc3RyYW50LlwiLFxuICAgIG1haWxFbmRGcmVlVGltZUJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgZ3JhdHVpdCDDoCBTSVRFX05BTUUgdmEgZXhwaXJlciBkJ2ljaSBxdWVscXVlcyBqb3Vycy48YnI+PGJyPlBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIGxlIHNpdGUsIHZvdXMgcG91dmV6IHNvdXNjcmlyZSDDoCB1biBhYm9ubmVtZW50IHNhbnMgdGFyZGVyIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFbmRGcmVlVGltZUJvZHlUeHQ6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIGxlIHNpdGUsIHZvdXMgcG91dmV6IHNhbnMgYXR0ZW5kcmUgc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTGlua1R4dCA6IFwiTSdhYm9ubmVyLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZU1lc3NhZ2U6IFwiIHJlbGFuY2VzIGVudm95w6llcy5cIixcbiAgICBtYWlsRW5kRnJlZVRpbWVTdWJqZWN0OiBcIlZvdHJlIGFib25uZW1lbnQgZ3JhdHVpdCB2YSBleHBpcmVyXCIsXG4gICAgbWFpbEV4cGlyYXRpb25Cb2R5SFRNTDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgU0lURV9OQU1FLCB2b3VzIHBvdXZleiBsZSBwcm9sb25nZXIgZMOocyBhdWpvdXJkJ2h1aSBlbiBjbGlxdWFudCBzdXIgbGUgbGllbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlUeHQ6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm90cmUgYWJvbm5lbWVudCDDoCBTSVRFX05BTUUgdmEgZXhwaXJlciBkJ2ljaSBxdWVscXVlcyBqb3Vycy5cXG5cXG5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxFeHBpcmF0aW9uTGlua1R4dCA6IFwiUHJvbG9uZ2VyIG1vbiBhYm9ubmVtZW50LlwiLFxuICAgIG1haWxFeHBpcmF0aW9uTWVzc2FnZTogXCJGSVJTVCBwcmVtacOocmVzIGV0IFNFQ09ORCBkZXV4acOobWVzIHJlbGFuY2VzIGVudm95w6llcyBwb3VyIGRlcyBhYm9ubmVtZW50cyBleHBpcmFudCBkJ2ljaSBwZXUuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25SZWxhdW5jaFR4dDogXCJbUmFwcGVsXSBcIixcbiAgICBtYWlsRXhwaXJhdGlvblN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCB2YSBiaWVudMO0dCBleHBpcmVyXCIsXG4gICAgbWFpbE5ld0VsZW1lbnRGb3JHcm91cFR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlbCBhcnRpY2xlIMOgIGxpcmUgOlxcblxcblFVRVNUSU9OTkFJUkVfVVJMXFxuXFxuQm9ubmUgbGVjdHVyZSAhXFxuXFxuU3RvcHBlciBsZXMgZW52b2lzID9cXG5VTlNVQlNDUklCRV9VUkxcIixcbiAgICBtYWlsTmV3UXVlc3Rpb25uYWlyZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvaWNpIGxlIGxpZW4gdmVycyBsZSBub3V2ZWF1IHF1aXogOlxcblxcblFVRVNUSU9OTkFJUkVfVVJMXFxuXFxuQm9ubmUgbGVjdHVyZSAhXFxuXFxuU3RvcHBlciBsZXMgZW52b2lzID9cXG5VTlNVQlNDUklCRV9VUkxcIixcbiAgICBtYWlsU3RvcE1haWxMaW5rVHh0IDogXCJTdG9wcGVyIGxlcyBlbnZvaXMuXCIsXG4gICAgbmVlZEtub3dJZk5vdGljZU9rIDogXCJJbCBtYW5xdWUgbCdpbmZvcm1hdGlvbiBzdXIgbCdhY2NlcHRhdGlvbiBvdSBub24gZGUgcmVjZXZvaXIgZGVzIG5vdGlmaWNhdGlvbnMuXCIsXG4gICAgbmVlZEludGVnZXJOdW1iZXJPZkRheXMgOiBcIkxlIG5vbWJyZSBkZSBqb3VycyBkZSBsJ2Fib25uZW1lbnQgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJPZkRheXMgOiBcIkxlIG5vbWJyZSBkZSBqb3VycyBkZSBsJ2Fib25uZW1lbnQgbmUgcGV1dCDDqnRyZSBuw6lnYXRpZiAhXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdEYXlzTGlzdCA6IFwiTGEgbGlzdGUgZGUgam91cnMgc8OpbGVjdGlvbm7DqXMgbidhIHBhcyBsZSBib24gZm9ybWF0ICh0cm9wIGxvbmd1ZSkuXCIsXG4gICAgbmVlZE51bWJlck9mRGF5cyA6IFwiSWwgZmF1dCB1biBub21icmUgZGUgam91cnMgcG91ciBsJ2Fib25uZW1lbnQuXCIsXG4gICAgbmVlZFVuaXF1ZURheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIERvdWJsb24gOiBcIixcbiAgICBuZWVkVmFsaWREYXlzTGlzdCA6IFwiTGEgbGlzdGUgZGUgam91cnMgc8OpbGVjdGlvbm7DqXMgbidhIHBhcyBsZSBib24gZm9ybWF0LiBDYXJhY3TDqHJlIG5vbiB2YWxpZGUgOiBcIixcbiAgICBub05ld1F1ZXN0aW9ubmFpcmVGb3JVc2VyIDogXCJBdWN1biBub3V2ZWF1IHF1ZXN0aW9ubmFpcmUgdHJvdXbDqSBwb3VyIHVuIGFib25uw6kgOiBcIixcbiAgICB1bnN1YnNjcmlwdGlvbk9rIDogXCJWb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBwcmlzZSBlbiBjb21wdGUuIFZvdXMgbmUgcmVjZXZyZXogcGx1cyBkZSBtZXNzYWdlcyB2ZW5hbnQgZHUgc2l0ZSwgc2F1ZiBwb3VyIHZvdXMgc2lnbmFsZXIgbGEgZmluIGRlIHZvdHJlIGFib25uZW1lbnQuPGJyPk4naMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy8jVVJMJz7DoCBhY2PDqWRlciDDoCB2b3RyZSBjb21wdGU8L2E+IHBvdXIgZGUgbm91dmVhdSBhdXRvcmlzZXIgY2VydGFpbnMgZW52b2lzLlwiLFxuICAgIHVuc3Vic2NyaXB0aW9uRmFpbCA6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgbGllbiBkZSBkw6lzYWJvbm5lbWVudCBuZSBmb25jdGlvbm5lIHBhcy48YnI+Vm91cyBwb3V2ZXogPGEgaHJlZj0nLyNVUkwnPmFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkw6lzYWN0aXZlciBsZXMgZW52b2lzIG1hbnVlbGxlbWVudC5cIlxufTtcbiIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIERFIFNBSVNJUiAvIMOJRElURVIgTEVTIElORk9TIERFUyBVVElMSVNBVEVVUlMgRVQgREUgTEVVUiBBQk9OTkVNRU5UXG5cbi8vLyBWw6lyaWZpZSBxdWUgbCd1dGlsaXNhdGV1ciBlc3QgYmllbiBjb25uZWN0w6ksIGEgbGUgYm9uIHN0YXR1dCBldCBsZSByZWRpcmlnZSB2ZXJzIGxlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbiBzaSBjZSBuJ2VzdCBwYXMgbGUgY2FzLlxuLy8vIFNpIGMnZXN0IG9rLCBwcm9wb3NlIHVuIG1vdGV1ciBkZSByZWNoZXJjaGUgcGVybWV0dGFudCBkZSBjaGVyY2hlciB1biB1dGlsaXNhdGV1clxuLy8vIFNpIHVuIGlkIGVzdCBwYXNzw6kgcGFyIGwndXJsIG9uIGFmZmljaGUgbGVzIGluZm9ybWF0aW9ucyBkZSBsJ3V0aWxpc2F0ZXVyIGRhbnMgdW4gZm9ybXVsYWlyZSBwZXJtZXR0YW50IGRlIGwnw6lkaXRlci9zdXBwcmltZXIuXG4vLy8gU2kgcGFzIGQnaWQgcGFzc8OpIHBhciBsJ3VybCwgb24gYWZmaWNoZSB1biBmb3JtdWxhaXJlIHZpZGUgcGVybWV0dGFudCBkJ2VuIHNhaXNpciB1biBub3V2ZWwgdXRpbGlzYXRldXJcblxuLy8vIMOAIGFqb3V0ZXIgOiBcbi8vLyAtIGltcG9ydGF0aW9uIGxpc3RlIGRlIGNvbXB0ZXMgdXRpbGlzYXRldXIgw6AgY3LDqWVyXG4vLy8gLSBhdHRyaWJ1dGlvbiBkJ3VuIHBhcnJhaW4gw6AgdW4gdXRpbGlzYXRldXIgKHZpYSB1biBtb3RldXIgZGUgcmVjaGVyY2hlKS4gRMOpasOgIHByw6l2dSBwYXIgbGUgY29udHLDtGxldXIuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IGNvbmZpZ1VzZXJzID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vycy5qc1wiKTtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG4vLyBGb25jdGlvbnMgdXRpbGVzIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGVtcHlGb3JtLCBnZXREYXRhc0Zyb21JbnB1dHMsIHNldEF0dHJpYnV0ZXNUb0lucHV0cyB9IGZyb20gXCIuL3Rvb2xzL2Zvcm1zLmpzXCI7XG5pbXBvcnQgeyBkYXRlRm9ybWF0LCBnZXRQYXNzd29yZCwgaXNFbXB0eSwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi90b29scy9tYWluXCI7XG5pbXBvcnQgeyBnZXRVcmxQYXJhbXMgfSBmcm9tIFwiLi90b29scy91cmwuanNcIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBhZGRPa01lc3NhZ2UsIHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGluZm9zQWRtaW5Hb2RmYXRoZXIsIGluZm9zQWRtaW5OYkdvZENoaWxkcywgaW5mb3NVc2VyRm9yQWRtaW4sIG5lZWRCZUNvbm5lY3RlZCwgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5jb25zdCB7IGluZm9zRXhwaXJhdGVkQWRtaW4sIGluZm9zTmJEYXlzQWRtaW4sIGluZm9zUGF5bWVudHNBZG1pbiwgaXNOb3RWYWxpZGVkIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3N1YnNjcmlwdGlvblwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGRpdk1haW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1haW4tY29udGVudFwiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBkaXZDcmFzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3Jhc2hcIik7XG5jb25zdCBkaXZTdWJzY3JpYmVJbnRybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3Vic2NyaWJlSW50cm9cIik7XG5jb25zdCBkaXZQYXltZW50c0luZm9zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpbmZvc1BheW1lbnRzXCIpO1xuY29uc3QgZGl2R29kY2hpbGRzSW5mb3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImluZm9zR29kY2hpbGRzXCIpO1xuY29uc3QgZm9ybVVzZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInVzZXJzXCIpO1xuY29uc3QgZGVsZXRlQ2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGV0ZU9rTGFiZWxcIik7XG5jb25zdCB2YWxpZGF0aW9uQ2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInZhbGlkYXRpb25Pa0xhYmVsXCIpO1xuY29uc3QgYnRuTmV3VXNlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2FudE5ld1VzZXJcIik7XG5jb25zdCBuZXdQYXNzd29yZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibmV3UGFzc3dvcmRcIik7XG5jb25zdCB0aW1lRGlmZmVyZW5jZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGltZURpZmZlcmVuY2VcIik7XG5jb25zdCBmb3JtU2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hVc2Vyc1wiKTtcbmNvbnN0IGRpdlNlYXJjaFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoUmVzdWx0XCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbihbXCJtYW5hZ2VyXCIsIFwiYWRtaW5cIl0sIFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlLCB7IG1lc3NhZ2U6IG5lZWRCZUNvbm5lY3RlZCwgY29sb3I6XCJlcnJvclwiIH0sIHdpbmRvdy5sb2NhdGlvbik7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgZGl2TWFpbi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGdldExvY2FseShcIm1lc3NhZ2VcIikpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIGdldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkubWVzc2FnZSwgXCJcIiwgW2dldExvY2FseShcIm1lc3NhZ2VcIiwgdHJ1ZSkuY29sb3JdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwibWVzc2FnZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAvLyBJbml0aWFsaXNhdGlvbiBkdSBmb3JtdWxhaXJlIGRlIHJlY2hlcmNoZSA6XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnVXNlcnMsIGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBGb25jdGlvbiB1dGlsZSBwb3VyIHZpZGVyIGxlIGZvcm11bGFpcmUsIHkgY29tcHJpcyBsZXMgY2hhbXBzIGhpZGRlbiwgZXRjLlxuICAgICAgICAgICAgLy8gQ2FjaGUgYXVzc2kgY2VydGFpbnMgY2hhbXBzIGVuIG1vZGUgY3LDqWF0aW9uXG4gICAgICAgICAgICBjb25zdCBlbXB0eVVzZXJGb3JtID0gKCkgPT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbXB5Rm9ybShmb3JtVXNlcik7XG4gICAgICAgICAgICAgICAgLy8gQ2FzZSBkZSBzdXBwcmVzc2lvbiBjYWNow6llIHBhciBkw6lmYXV0LCBjYXIgaW51dGlsZSBwb3VyIGZvcm11bGFpcmUgZGUgY3LDqWF0aW9uXG4gICAgICAgICAgICAgICAgZGVsZXRlQ2hlY2tCb3guc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAvLyBDYXNlIGRlIHZhbGlkYXRpb24gY2FjaMOpZSBwYXIgZMOpZmF1dCwgY2FyIHV0aWxlIHF1ZSBkYW5zIGNlcnRhaW5zIGNhc1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25DaGVja0JveC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgIGRpdlN1YnNjcmliZUludHJvLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgIGRpdlBheW1lbnRzSW5mb3MuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgZGl2R29kY2hpbGRzSW5mb3MuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgLy8gQ2VydGFpbnMgbmF2aWdhdGV1cnMgb250IHRlbmRhbmNlIMOgIHJlbXBsaXIgdG91dCBzZXVsIGxlcyBjaGFtcHMgY29uZmlnVXNlcnMucGFzc3dvcmRcbiAgICAgICAgICAgICAgICBuZXdQYXNzd29yZC52YWx1ZT1cIlwiO1xuICAgICAgICAgICAgICAgIC8vIEVuIG1vZGUgY3LDqWF0aW9uLCBwYXMgZGUgY2hhbXAgcG91ciBjaGFuZ2VyIGxlIG1vdCBkZSBwYXNzZVxuICAgICAgICAgICAgICAgIG5ld1Bhc3N3b3JkLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAvLyBJbnV0aWxlIGVuIG1vZGUgY3LDqWF0aW9uXG4gICAgICAgICAgICAgICAgdGltZURpZmZlcmVuY2UucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW1wdHlVc2VyRm9ybSgpO1xuICAgICAgICAgICAgLy8gSW5pdGlhbGlzZSBsZXMgY29udHJhaW50ZXMgZHUgZm9ybXVsYWlyZSA6XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMoY29uZmlnVXNlcnMsIGZvcm1Vc2VyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gRm9uY3Rpb24gYWZmaWNoYW50IGxlcyBpbmZvcyBjb25udWVzIGNvbmNlcm5hbnQgdW4gdXRpbGlzYXRldXIgZXQgc29uIGFib25uZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IHNob3dGb3JtVXNlckluZm9zID0gKGlkKSA9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIG9uIGNvbW1lbmNlIHBhciB0b3V0IHZpZGVyLCBkZXMgZm9pcyBxdWUuLi4gOlxuICAgICAgICAgICAgICAgIGVtcHR5VXNlckZvcm0oKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHJHZXRJbmZvcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhockdldEluZm9zLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuZ2V0VXNlckluZm9zK2lkKTtcbiAgICAgICAgICAgICAgICB4aHJHZXRJbmZvcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLlVzZXIgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Bhc3N3b3JkLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZURpZmZlcmVuY2UucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBUZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1VTRVIgOiByZXNwb25zZS5Vc2VyLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0NSRUEgOiBkYXRlRm9ybWF0KHJlc3BvbnNlLlVzZXIuY3JlYXRlZEF0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9VUERBVEUgOiBkYXRlRm9ybWF0KHJlc3BvbnNlLlVzZXIudXBkYXRlZEF0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9DT05ORUNUSU9OIDogZGF0ZUZvcm1hdChyZXNwb25zZS5Vc2VyLmNvbm5lY3RlZEF0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZUludHJvPXJlcGxhY2VBbGwoaW5mb3NVc2VyRm9yQWRtaW4sIG1hcFRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgZGF0YSBpbiByZXNwb25zZS5Vc2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZm9ybVVzZXIuZWxlbWVudHNbZGF0YV0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLlVzZXJbZGF0YV0hPT10cnVlICYmIHJlc3BvbnNlLlVzZXJbZGF0YV0hPT1mYWxzZSkvLyBib29sw6llbiA9IGNhc2Ugw6AgY29jaGVyICFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtVXNlci5lbGVtZW50c1tkYXRhXS52YWx1ZT1yZXNwb25zZS5Vc2VyW2RhdGFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuVXNlcltkYXRhXT09dHJ1ZSkgLy8gc2kgZmFsc2UsIG9uIG5lIGZhaXQgcmllblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Vc2VyLmVsZW1lbnRzW1wiXCIrZGF0YV0uY2hlY2tlZD1cImNoZWNrZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5TdWJzY3JpcHRpb24gIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtVXNlci5lbGVtZW50c1tcIm51bWJlck9mRGF5c1wiXS52YWx1ZT1yZXNwb25zZS5TdWJzY3JpcHRpb25bXCJudW1iZXJPZkRheXNcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGpvdXJzIGRlIHLDqWNlcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Vc2VyLmVsZW1lbnRzW1wiZFwiK3Jlc3BvbnNlLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5c1tpXV0uY2hlY2tlZD1cImNoZWNrZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVnaW5TdWJUUz1uZXcgRGF0ZShyZXNwb25zZS5TdWJzY3JpcHRpb24uY3JlYXRlZEF0KS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLlN1YnNjcmlwdGlvbi5udW1iZXJPZkRheXMgIT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5iRGF5c09rPXJlc3BvbnNlLlN1YnNjcmlwdGlvbi5udW1iZXJPZkRheXMtTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1iZWdpblN1YlRTKS8xMDAwLzM2MDAvMjQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmJEYXlzT2sgPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZUludHJvKz1cIjxicj5cIitpbmZvc05iRGF5c0FkbWluLnJlcGxhY2UoXCJOQl9EQVlTXCIsIG5iRGF5c09rKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVJbnRybys9XCI8YnI+ZGRcIitpbmZvc0V4cGlyYXRlZEFkbWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U3Vic2NyaWJlSW50cm8sIFwicFwiLCBzdWJzY3JpYmVJbnRybywgXCJcIiwgW1wiaW5mb1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlN1YnNjcmliZUludHJvLCBcInBcIiwgaXNOb3RWYWxpZGVkLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25DaGVja0JveC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2hlY2tCb3guc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3MgZGUgcGFpZW1lbnRzIHZpYSBBUEkgV1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJHZXRQYXltZW50c0luZm9zID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0UGF5bWVudHNJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy5nZXRQYXltZW50cytyZXNwb25zZS5Vc2VyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRQYXltZW50c0luZm9zLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlUGF5PUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2VQYXkubGVuZ3RoIT09MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eHRQYXltZW50cz1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2VQYXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcFRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfUEFZTUVOVCA6IGRhdGVGb3JtYXQocmVzcG9uc2VQYXlbaV0uY3JlYXRlZEF0LCBcImZyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNT1VOVCA6IHJlc3BvbnNlUGF5W2ldLmFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTElFTlRfTkFNRSA6IHJlc3BvbnNlUGF5W2ldLmNsaWVudE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRQYXltZW50cys9XCI8bGk+XCIrcmVwbGFjZUFsbChpbmZvc05iRGF5c0FkbWluLCBtYXBUZXh0KStcIjwvbGk+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZQYXltZW50c0luZm9zLCBcInVsXCIsIHR4dFBheW1lbnRzLCBcIlwiLCBbXCJpbmZvXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlBheW1lbnRzSW5mb3Muc3R5bGUuZGlzcGxheT1cImJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0UGF5bWVudHNJbmZvcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRQYXltZW50c0luZm9zLnNlbmQoKTsgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuIHBhcnJhaW4gb3UgZGV1eCBwYXIgZGV1eCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzcG9uc2UuVXNlci5Hb2RmYXRoZXJJZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJHZXRHb2RGYXRoZXJJbmZvcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RGYXRoZXJJbmZvcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldFVzZXJJbmZvcytyZXNwb25zZS5Vc2VyLkdvZGZhdGhlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kRmF0aGVySW5mb3Mub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlR0Y9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2VHRi5Vc2VyICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2R29kY2hpbGRzSW5mb3MsIFwicFwiLCBpbmZvc0FkbWluR29kZmF0aGVyK1wiPGEgaHJlZj0nL1wiK2NvbmZpZ1RlbXBsYXRlLnVzZXJzTWFuYWdlbWVudFBhZ2UrXCI/aWQ9XCIrcmVzcG9uc2VHRi5Vc2VyLmlkK1wiJz5cIityZXNwb25zZUdGLlVzZXIubmFtZStcIjwvYT5cIitcIi48YnI+XCIsIFwiXCIsIFtcImluZm9cIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2R29kY2hpbGRzSW5mb3Muc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldEdvZEZhdGhlckluZm9zLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kRmF0aGVySW5mb3Muc2VuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlcyBmaWxsZXVscyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dEdvZGNoaWxkcz1cIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhockdldEdvZGNoaWxkcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldEdvZGNoaWxkcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmdldEdvZENoaWxkcytpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kY2hpbGRzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlR1M9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZUdTLmxlbmd0aCE9PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRHb2RjaGlsZHMrPWluZm9zQWRtaW5Hb2RmYXRoZXIucmVwbGFjZShcIiNOQlwiLCByZXNwb25zZUdTLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZUdTKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0R29kY2hpbGRzKz1cIjxhIGhyZWY9Jy9cIitjb25maWdUZW1wbGF0ZS51c2Vyc01hbmFnZW1lbnRQYWdlK1wiP2lkPVwiK3Jlc3BvbnNlR1NbaV0uaWQrXCInPlwiK3Jlc3BvbnNlR1NbaV0ubmFtZStcIjwvYT5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZHb2RjaGlsZHNJbmZvcywgXCJwXCIsIHR4dEdvZGNoaWxkcytcIi5cIiwgXCJcIiwgW1wiaW5mb1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZHb2RjaGlsZHNJbmZvcy5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kY2hpbGRzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMuc2VuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhockdldEluZm9zLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhockdldEluZm9zLnNlbmQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2kgdW4gaWQgZXN0IHBhc3PDqSBwYXIgbCd1cmwsIG9uIGVzc2F5ZSBkJ2FmZmljaGVyIGwndXRpbGlzYXRldXIgOlxuICAgICAgICAgICAgbGV0IHVybERhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYodXJsRGF0YXMgJiYgdXJsRGF0YXMuaWQhPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgc2hvd0Zvcm1Vc2VySW5mb3ModXJsRGF0YXMuaWQpO1xuXG4gICAgICAgICAgICAvLyBCZXNvaW4gZCd1biBjb3VwIGRlIEvDpHJjaGVyID8gXG4gICAgICAgICAgICBidG5OZXdVc2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVtcHR5VXNlckZvcm0oKTtcbiAgICAgICAgICAgIH0pOyAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBFbnZvaSBkdSBmb3JtdWxhaXJlIGRlcyBpbmZvcyBkZSBsJ3V0aWxpc2F0ZXVyXG4gICAgICAgICAgICBmb3JtVXNlci5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMoZm9ybVVzZXIpO1xuICAgICAgICAgICAgICAgIC8vIHJlY29tcG9zaXRpb24gZGVzIGpvdXJzIHZhbGFibGVzIHBvdXIgbCdhYm9ubmVtZW50IDpcbiAgICAgICAgICAgICAgICBkYXRhcy5yZWNlaXB0RGF5cz1cIlwiO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaT0xOyBpPD03OyBpKyspXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZihkYXRhc1tcImRcIitpXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnJlY2VpcHREYXlzKz1cIlwiK2k7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHhoclVzZXJEYXRhcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSAmJiAoZGF0YXMuZGVsZXRlT2shPT11bmRlZmluZWQpKVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyRGF0YXMub3BlbihcIkRFTEVURVwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytcIi9cIitkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZighaXNFbXB0eShkYXRhcy5pZCkgJiYgKGRhdGFzLnZhbGlkYXRpb25PayE9PXVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy52YWxpZGF0ZVVzZXJSb3V0ZStkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZighaXNFbXB0eShkYXRhcy5pZCkpXG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5vcGVuKFwiUFVUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLnVwZGF0ZVVzZXJJbmZvcytkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMucGFzc3dvcmQ9Z2V0UGFzc3dvcmQoY29uZmlnVXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLCBjb25maWdVc2Vycy5wYXNzd29yZC5taW5sZW5ndGgrMik7Ly8gbW90IGRlIHBhc3NlIHRlbXBvcmFpcmVcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLmNyZWF0ZVVzZXJSb3V0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAxICYmIHJlc3BvbnNlLmlkIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGFkZE9rTWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXMuaWQ9cmVzcG9uc2UuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLm1lc3NhZ2UhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHJlc3BvbnNlLmVycm9ycy5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzRW1wdHkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhcy5kZWxldGVPaz09PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Zvcm1Vc2VySW5mb3MoZGF0YXMuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlVc2VyRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJVc2VyRGF0YXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gVHJhaXRlbWVudCBkdSBsYW5jZW1lbnQgZCd1bmUgcmVjaGVyY2hlXG4gICAgICAgICAgICBmb3JtU2VhcmNoLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhmb3JtU2VhcmNoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHJTZWFyY2ggPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2gub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuc2VhcmNoVXNlclJvdXRlKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2gub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5sZW5ndGg9PT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdEhUTUw9XCI8b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RIVE1MKz1cIjxvcHRpb24gdmFsdWU9J1wiK3Jlc3BvbnNlW2ldLmlkK1wiJz5cIityZXNwb25zZVtpXS5uYW1lK1wiIChcIityZXNwb25zZVtpXS5lbWFpbCtcIik8L29wdGlvbj5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTZWFyY2hSZXN1bHQsIFwic2VsZWN0XCIsIHNlbGVjdEhUTUwsIFwic2VsZWN0U2VhcmNoXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hTZWxlY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNlbGVjdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2VhcmNoU2VsZWN0LnZhbHVlIT09XCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm9ybVVzZXJJbmZvcyhzZWFyY2hTZWxlY3QudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTZWFyY2hSZXN1bHQsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICB4aHJTZWFyY2guc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGFzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZDcmFzaCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgPSAoaW5wdXRzQ29uZiwgbXlGb3JtKSA9Plxue1xuICAgIGZvcihsZXQgaSBpbiBteUZvcm0uZWxlbWVudHMpXG4gICAge1xuICAgICAgICBpZighaXNFbXB0eShteUZvcm0uZWxlbWVudHNbaV0uaWQpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgaWRJbnB1dD1teUZvcm0uZWxlbWVudHNbaV0uaWQ7XG4gICAgICAgICAgICBpZihpbnB1dHNDb25mW2lkSW5wdXRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBpbnB1dEhUTUw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRJbnB1dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIGluIGlucHV0c0NvbmZbaWRJbnB1dF0pXG4gICAgICAgICAgICAgICAgICAgIGlucHV0SFRNTC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBpbnB1dHNDb25mW2lkSW5wdXRdW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vLyBSw6ljdXDDqHJlIHRvdXRlcyBsZXMgdmFsZXVycyBkZSBjaGFtcHMgZW4gb21ldHRhbnQgbGVzIGNoZWNrYm94IG5vbiBjb2Now6llcywgZXRjLlxuZXhwb3J0IGNvbnN0IGdldERhdGFzRnJvbUlucHV0cyA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZGF0YXM9e307XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgZGF0YXNbZW50cmllWzBdXT1lbnRyaWVbMV07XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBWaWRlIHRvdXMgbGVzIGNoYW1wcyBkJ3VuIGZvcm11bGFpcmUsIHkgY29tcHJpcyBoaWRkZW4sIGNoZWNrYm94LCBldGMuXG4vLyBSZXZvaXIgcG91ciBsZXMgc2VsZWN0XG5leHBvcnQgY29uc3QgZW1weUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgIHtcbiAgICAgICAgaWYobXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJjaGVja2JveFwiIHx8IG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwicmFkaW9cIilcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnZhbHVlPVwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8gVmlkZSBldCBjYWNoZSBsZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgZW1weUFuZEhpZGVGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBlbXB5Rm9ybShteUZvcm0pO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC91c2VyJCIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9nZW5lcmFsLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL3N1YnNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci91c2VyLmpzIiwid2VicGFjazovLy8uLi90b29scy9tYWluLmpzIiwid2VicGFjazovLy8uLi92aWV3cyBzeW5jIF5cXC5cXC8uKlxcLmpzJCIsIndlYnBhY2s6Ly8vLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL21hbmFnZVVzZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91cmwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIl0sIm5hbWVzIjpbInVzZXJzIiwicmVxdWlyZSIsInF1ZXN0aW9ubmFpcmVzIiwibW9kdWxlIiwiZXhwb3J0cyIsImFwaVVybCIsInNpdGVVcmwiLCJhZG1pbk5hbWUiLCJhZG1pbkVtYWlsIiwic2VuZGVyTmFtZSIsInNlbmRlckVtYWlsIiwiYWRtaW5MYW5nIiwidGhlbWUiLCJhdmFpbGFibGVMYW5ncyIsInNpdGVOYW1lIiwiYmVnaW5Db2RlR29kZmF0aGVyIiwiZGVmYXVsdFJlY2VpcHREYXlzIiwiY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwicmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZSIsInRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzIiwidG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXMiLCJ0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VycyIsInRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzIiwidG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzIiwiZnJlZUFjY291bnRUaW1pbmdJbkRheXMiLCJmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXMiLCJpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXMiLCJuYlF1ZXN0aW9uc01pbiIsIm5iUXVlc3Rpb25zTWF4IiwibmJDaG9pY2VzTWF4IiwibmJOZXdRdWVzdGlvbm5haXJlcyIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kIiwibWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWUiLCJtaW5TZWFyY2hRdWVzdGlvbm5haXJlcyIsImZpZWxkTmV3UXVlc3Rpb25uYWlyZXMiLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbiIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4IiwibmJJbGx1c3RyYXRpb25zTWluIiwibmJJbGx1c3RyYXRpb25zTWF4IiwibWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQiLCJtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb24iLCJpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4IiwiaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHgiLCJuYkxpbmtzTWluIiwibmJMaW5rc01heCIsInBhc3N3b3JkTWluTGVuZ3RoIiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFsbFN1YnNjcmlwdGlvblByb2Nlc3NlZCIsImluZm9zRXhwaXJhdGVkIiwiaW5mb3NFeHBpcmF0ZWRBZG1pbiIsImluZm9zTmJEYXlzIiwiaW5mb3NOYkRheXNBZG1pbiIsImluZm9zUGF5bWVudHNBZG1pbiIsImlzTm90VmFsaWRlZCIsIm1haWxFbmRGcmVlVGltZUJvZHlIVE1MIiwibWFpbEVuZEZyZWVUaW1lQm9keVR4dCIsIm1haWxFbmRGcmVlVGltZUxpbmtUeHQiLCJtYWlsRW5kRnJlZVRpbWVNZXNzYWdlIiwibWFpbEVuZEZyZWVUaW1lU3ViamVjdCIsIm1haWxFeHBpcmF0aW9uQm9keUhUTUwiLCJtYWlsRXhwaXJhdGlvbkJvZHlUeHQiLCJtYWlsRXhwaXJhdGlvbkxpbmtUeHQiLCJtYWlsRXhwaXJhdGlvbk1lc3NhZ2UiLCJtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0IiwibWFpbEV4cGlyYXRpb25TdWJqZWN0IiwibWFpbE5ld0VsZW1lbnRGb3JHcm91cFR4dCIsIm1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCIsIm1haWxTdG9wTWFpbExpbmtUeHQiLCJuZWVkS25vd0lmTm90aWNlT2siLCJuZWVkSW50ZWdlck51bWJlck9mRGF5cyIsIm5lZWRNaW5OdW1iZXJPZkRheXMiLCJuZWVkTm90VG9vTG9uZ0RheXNMaXN0IiwibmVlZE51bWJlck9mRGF5cyIsIm5lZWRVbmlxdWVEYXlzTGlzdCIsIm5lZWRWYWxpZERheXNMaXN0Iiwibm9OZXdRdWVzdGlvbm5haXJlRm9yVXNlciIsInVuc3Vic2NyaXB0aW9uT2siLCJ1bnN1YnNjcmlwdGlvbkZhaWwiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1VzZXJzIiwiY29uZmlnVGVtcGxhdGUiLCJkaXZNYWluIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdk1lc3NhZ2UiLCJkaXZSZXNwb25zZSIsImRpdkNyYXNoIiwiZGl2U3Vic2NyaWJlSW50cm8iLCJkaXZQYXltZW50c0luZm9zIiwiZGl2R29kY2hpbGRzSW5mb3MiLCJmb3JtVXNlciIsImRlbGV0ZUNoZWNrQm94IiwidmFsaWRhdGlvbkNoZWNrQm94IiwiYnRuTmV3VXNlciIsInRpbWVEaWZmZXJlbmNlIiwiZm9ybVNlYXJjaCIsImRpdlNlYXJjaFJlc3VsdCIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwibWVzc2FnZSIsImNvbG9yIiwid2luZG93IiwibG9jYXRpb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJzdHlsZSIsImRpc3BsYXkiLCJhZGRFbGVtZW50IiwicmVtb3ZlTG9jYWx5Iiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiZW1wdHlVc2VyRm9ybSIsImVtcHlGb3JtIiwiaW5uZXJIVE1MIiwicGFyZW50Tm9kZSIsInNob3dGb3JtVXNlckluZm9zIiwieGhyR2V0SW5mb3MiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwiVXNlciIsIm1hcFRleHQiLCJJRF9VU0VSIiwiREFURV9DUkVBIiwiY3JlYXRlZEF0IiwiREFURV9VUERBVEUiLCJ1cGRhdGVkQXQiLCJEQVRFX0NPTk5FQ1RJT04iLCJjb25uZWN0ZWRBdCIsInN1YnNjcmliZUludHJvIiwiZGF0YSIsImVsZW1lbnRzIiwiY2hlY2tlZCIsIlN1YnNjcmlwdGlvbiIsInJlY2VpcHREYXlzIiwiYmVnaW5TdWJUUyIsImdldFRpbWUiLCJudW1iZXJPZkRheXMiLCJuYkRheXNPayIsInJvdW5kIiwibm93IiwieGhyR2V0UGF5bWVudHNJbmZvcyIsInJlc3BvbnNlUGF5IiwidHh0UGF5bWVudHMiLCJEQVRFX1BBWU1FTlQiLCJBTU9VTlQiLCJhbW91bnQiLCJDTElFTlRfTkFNRSIsImNsaWVudE5hbWUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwidG9rZW4iLCJzZW5kIiwiR29kZmF0aGVySWQiLCJ4aHJHZXRHb2RGYXRoZXJJbmZvcyIsInJlc3BvbnNlR0YiLCJ0eHRHb2RjaGlsZHMiLCJ4aHJHZXRHb2RjaGlsZHMiLCJyZXNwb25zZUdTIiwidXJsRGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZGF0YXMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJVc2VyRGF0YXMiLCJkZWxldGVPayIsInZhbGlkYXRpb25PayIsIkFycmF5IiwiaXNBcnJheSIsImVycm9ycyIsInN0cmluZ2lmeSIsInhoclNlYXJjaCIsInNlbGVjdEhUTUwiLCJzZWFyY2hTZWxlY3QiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsInR5cGUiLCJlbXB5QW5kSGlkZUZvcm0iLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRlY29kZVVSSSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwieGhyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidXJsQWNjb3VudCIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7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LENBQUNDLFFBQVAsQ0FBZ0JtSixNQUFoQixDQUF1QmIsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9tYW5hZ2VVc2Vycy5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9tYW5hZ2VVc2Vycy5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvc3Vic2NyaXB0aW9uXCI6IFwiLi4vbGFuZy9mci9zdWJzY3JpcHRpb24uanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9zdWJzY3JpcHRpb24kXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQgOiBcIlRvdXMgbGVzIGFib25uw6lzIG9udCDDqXTDqSB0cmFpdMOpcyBwb3VyIGxlIG1vbWVudC5cIixcbiAgICBpbmZvc0V4cGlyYXRlZDogXCJWb3RyZSBhYm9ubmVtZW50IGEgZXhwaXLDqSwgbWFpcyBpbCB2b3VzIHJlc3RlIGVuY29yZSBxdWVscXVlcyBqb3VycyBhdmFudCBxdWUgdm90cmUgY29tcHRlIGV0IHZvcyBkb25uw6llcyBuZSBzb2llbnQgY29tcGzDqHRlbWVudCBzdXBwcmltw6llcy48YnI+UG91ciBjZSBmYWlyZSwgc3VpdmV6IHNhbnMgdGFyZGVyIGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc0V4cGlyYXRlZEFkbWluOiBcIkNldCBhYm9ubmVtZW50IGEgZXhwaXLDqS5cIixcbiAgICBpbmZvc05iRGF5czogXCJWb3RyZSBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+Ljxicj5Wb3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCBwcm9sb25nZXIgdm90cmUgYWJvbm5lbWVudCBlbiBzdWl2YW50IGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc05iRGF5c0FkbWluOiBcIkNldCBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+LlwiLFxuICAgIGluZm9zUGF5bWVudHNBZG1pbiA6IFwiREFURV9QQVlNRU5UIDogcGFpZW1lbnQgZGUgQU1PVU5UIOKCrCBhdSBub20gZGUgQ0xJRU5UX05BTUUuXCIsXG4gICAgaXNOb3RWYWxpZGVkIDogXCJDZXQgdXRpbGlzYXRldXIgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLjxicj5Wb3VzIHBvdXZleiBsZSBmYWlyZSDDoCBzYSBwbGFjZSA8YSBocmVmPScjdmFsaWRhdGlvbk9rJz5lbiBjb2NoYW50IGxhIGNhc2UgaW5kaXF1w6llPC9hPiBldCBlbnJlZ2lzdHJhbnQuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keUhUTUw6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgc2FucyB0YXJkZXIgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy48L3A+XCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IGdyYXR1aXQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuXFxuXFxuUG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc2FucyBhdHRlbmRyZSBzb3VzY3JpcmUgw6AgdW4gYWJvbm5lbWVudCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IDogXCJNJ2Fib25uZXIuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTWVzc2FnZTogXCIgcmVsYW5jZXMgZW52b3nDqWVzLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZVN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IHZhIGV4cGlyZXJcIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuPGJyPjxicj5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFeHBpcmF0aW9uQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIFNJVEVfTkFNRSwgdm91cyBwb3V2ZXogbGUgcHJvbG9uZ2VyIGTDqHMgYXVqb3VyZCdodWkgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEV4cGlyYXRpb25MaW5rVHh0IDogXCJQcm9sb25nZXIgbW9uIGFib25uZW1lbnQuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25NZXNzYWdlOiBcIkZJUlNUIHByZW1pw6hyZXMgZXQgU0VDT05EIGRldXhpw6htZXMgcmVsYW5jZXMgZW52b3nDqWVzIHBvdXIgZGVzIGFib25uZW1lbnRzIGV4cGlyYW50IGQnaWNpIHBldS5cIixcbiAgICBtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0OiBcIltSYXBwZWxdIFwiLFxuICAgIG1haWxFeHBpcmF0aW9uU3ViamVjdDogXCJWb3RyZSBhYm9ubmVtZW50IHZhIGJpZW50w7R0IGV4cGlyZXJcIixcbiAgICBtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb2ljaSBsZSBsaWVuIHZlcnMgbGUgbm91dmVsIGFydGljbGUgw6AgbGlyZSA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlYXUgcXVpeiA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxTdG9wTWFpbExpbmtUeHQgOiBcIlN0b3BwZXIgbGVzIGVudm9pcy5cIixcbiAgICBuZWVkS25vd0lmTm90aWNlT2sgOiBcIklsIG1hbnF1ZSBsJ2luZm9ybWF0aW9uIHN1ciBsJ2FjY2VwdGF0aW9uIG91IG5vbiBkZSByZWNldm9pciBkZXMgbm90aWZpY2F0aW9ucy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIuXCIsXG4gICAgbmVlZE1pbk51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmICFcIixcbiAgICBuZWVkTm90VG9vTG9uZ0RheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQgKHRyb3AgbG9uZ3VlKS5cIixcbiAgICBuZWVkTnVtYmVyT2ZEYXlzIDogXCJJbCBmYXV0IHVuIG5vbWJyZSBkZSBqb3VycyBwb3VyIGwnYWJvbm5lbWVudC5cIixcbiAgICBuZWVkVW5pcXVlRGF5c0xpc3QgOiBcIkxhIGxpc3RlIGRlIGpvdXJzIHPDqWxlY3Rpb25uw6lzIG4nYSBwYXMgbGUgYm9uIGZvcm1hdC4gRG91YmxvbiA6IFwiLFxuICAgIG5lZWRWYWxpZERheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIENhcmFjdMOocmUgbm9uIHZhbGlkZSA6IFwiLFxuICAgIG5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIgOiBcIkF1Y3VuIG5vdXZlYXUgcXVlc3Rpb25uYWlyZSB0cm91dsOpIHBvdXIgdW4gYWJvbm7DqSA6IFwiLFxuICAgIHVuc3Vic2NyaXB0aW9uT2sgOiBcIlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIHByaXNlIGVuIGNvbXB0ZS4gVm91cyBuZSByZWNldnJleiBwbHVzIGRlIG1lc3NhZ2VzIHZlbmFudCBkdSBzaXRlLCBzYXVmIHBvdXIgdm91cyBzaWduYWxlciBsYSBmaW4gZGUgdm90cmUgYWJvbm5lbWVudC48YnI+Tidow6lzaXRleiBwYXMgPGEgaHJlZj0nLyNVUkwnPsOgIGFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkZSBub3V2ZWF1IGF1dG9yaXNlciBjZXJ0YWlucyBlbnZvaXMuXCIsXG4gICAgdW5zdWJzY3JpcHRpb25GYWlsIDogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBsaWVuIGRlIGTDqXNhYm9ubmVtZW50IG5lIGZvbmN0aW9ubmUgcGFzLjxicj5Wb3VzIHBvdXZleiA8YSBocmVmPScvI1VSTCc+YWNjw6lkZXIgw6Agdm90cmUgY29tcHRlPC9hPiBwb3VyIGTDqXNhY3RpdmVyIGxlcyBlbnZvaXMgbWFudWVsbGVtZW50LlwiXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBEVSBGT1JNVUxBSVJFIFBFUk1FVFRBTlQgREUgU0FJU0lSIC8gw4lESVRFUiBMRVMgSU5GT1MgREVTIFVUSUxJU0FURVVSUyBFVCBERSBMRVVSIEFCT05ORU1FTlRcblxuLy8vIFbDqXJpZmllIHF1ZSBsJ3V0aWxpc2F0ZXVyIGVzdCBiaWVuIGNvbm5lY3TDqSwgYSBsZSBib24gc3RhdHV0IGV0IGxlIHJlZGlyaWdlIHZlcnMgbGUgZm9ybXVsYWlyZSBkJ2luc2NyaXB0aW9uIHNpIGNlIG4nZXN0IHBhcyBsZSBjYXMuXG4vLy8gU2kgYydlc3Qgb2ssIHByb3Bvc2UgdW4gbW90ZXVyIGRlIHJlY2hlcmNoZSBwZXJtZXR0YW50IGRlIGNoZXJjaGVyIHVuIHV0aWxpc2F0ZXVyXG4vLy8gU2kgdW4gaWQgZXN0IHBhc3PDqSBwYXIgbCd1cmwgb24gYWZmaWNoZSBsZXMgaW5mb3JtYXRpb25zIGRlIGwndXRpbGlzYXRldXIgZGFucyB1biBmb3JtdWxhaXJlIHBlcm1ldHRhbnQgZGUgbCfDqWRpdGVyL3N1cHByaW1lci5cbi8vLyBTaSBwYXMgZCdpZCBwYXNzw6kgcGFyIGwndXJsLCBvbiBhZmZpY2hlIHVuIGZvcm11bGFpcmUgdmlkZSBwZXJtZXR0YW50IGQnZW4gc2Fpc2lyIHVuIG5vdXZlbCB1dGlsaXNhdGV1clxuXG4vLy8gw4AgYWpvdXRlciA6IFxuLy8vIC0gaW1wb3J0YXRpb24gbGlzdGUgZGUgY29tcHRlcyB1dGlsaXNhdGV1ciDDoCBjcsOpZXJcbi8vLyAtIGF0dHJpYnV0aW9uIGQndW4gcGFycmFpbiDDoCB1biB1dGlsaXNhdGV1ciAodmlhIHVuIG1vdGV1ciBkZSByZWNoZXJjaGUpLiBEw6lqw6AgcHLDqXZ1IHBhciBsZSBjb250csO0bGV1ci5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnVXNlcnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzLmpzXCIpO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbi8vIEZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZW1weUZvcm0sIGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGRhdGVGb3JtYXQsIGdldFBhc3N3b3JkLCBpc0VtcHR5LCByZXBsYWNlQWxsIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IGFkZE9rTWVzc2FnZSwgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcbmNvbnN0IHsgaW5mb3NBZG1pbkdvZGZhdGhlciwgaW5mb3NBZG1pbk5iR29kQ2hpbGRzLCBpbmZvc1VzZXJGb3JBZG1pbiwgbmVlZEJlQ29ubmVjdGVkLCBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcbmNvbnN0IHsgaW5mb3NFeHBpcmF0ZWRBZG1pbiwgaW5mb3NOYkRheXNBZG1pbiwgaW5mb3NQYXltZW50c0FkbWluLCBpc05vdFZhbGlkZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvc3Vic2NyaXB0aW9uXCIpO1xuXG4vLyBQcmluY2lwYXV4IMOpbMOpbWVudHMgZHUgRE9NIG1hbmlwdWzDqXMgOlxuY29uc3QgZGl2TWFpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWFpbi1jb250ZW50XCIpO1xuY29uc3QgZGl2TWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWVzc2FnZVwiKTtcbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGRpdkNyYXNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjcmFzaFwiKTtcbmNvbnN0IGRpdlN1YnNjcmliZUludHJvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdWJzY3JpYmVJbnRyb1wiKTtcbmNvbnN0IGRpdlBheW1lbnRzSW5mb3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImluZm9zUGF5bWVudHNcIik7XG5jb25zdCBkaXZHb2RjaGlsZHNJbmZvcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaW5mb3NHb2RjaGlsZHNcIik7XG5jb25zdCBmb3JtVXNlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidXNlcnNcIik7XG5jb25zdCBkZWxldGVDaGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGVsZXRlT2tMYWJlbFwiKTtcbmNvbnN0IHZhbGlkYXRpb25DaGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidmFsaWRhdGlvbk9rTGFiZWxcIik7XG5jb25zdCBidG5OZXdVc2VyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3YW50TmV3VXNlclwiKTtcbmNvbnN0IG5ld1Bhc3N3b3JkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJuZXdQYXNzd29yZFwiKTtcbmNvbnN0IHRpbWVEaWZmZXJlbmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0aW1lRGlmZmVyZW5jZVwiKTtcbmNvbnN0IGZvcm1TZWFyY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlYXJjaFVzZXJzXCIpO1xuY29uc3QgZGl2U2VhcmNoUmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hSZXN1bHRcIik7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcIm1hbmFnZXJcIiwgXCJhZG1pblwiXSwgXCIvXCIrY29uZmlnVGVtcGxhdGUuY29ubmVjdGlvblBhZ2UsIHsgbWVzc2FnZTogbmVlZEJlQ29ubmVjdGVkLCBjb2xvcjpcImVycm9yXCIgfSwgd2luZG93LmxvY2F0aW9uKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7XG4gICAgICAgICAgICBkaXZNYWluLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2V0TG9jYWx5KFwibWVzc2FnZVwiKSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5tZXNzYWdlLCBcIlwiLCBbZ2V0TG9jYWx5KFwibWVzc2FnZVwiLCB0cnVlKS5jb2xvcl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJtZXNzYWdlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIC8vIEluaXRpYWxpc2F0aW9uIGR1IGZvcm11bGFpcmUgZGUgcmVjaGVyY2hlIDpcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdVc2VycywgZm9ybVNlYXJjaCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIEZvbmN0aW9uIHV0aWxlIHBvdXIgdmlkZXIgbGUgZm9ybXVsYWlyZSwgeSBjb21wcmlzIGxlcyBjaGFtcHMgaGlkZGVuLCBldGMuXG4gICAgICAgICAgICAvLyBDYWNoZSBhdXNzaSBjZXJ0YWlucyBjaGFtcHMgZW4gbW9kZSBjcsOpYXRpb25cbiAgICAgICAgICAgIGNvbnN0IGVtcHR5VXNlckZvcm0gPSAoKSA9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVtcHlGb3JtKGZvcm1Vc2VyKTtcbiAgICAgICAgICAgICAgICAvLyBDYXNlIGRlIHN1cHByZXNzaW9uIGNhY2jDqWUgcGFyIGTDqWZhdXQsIGNhciBpbnV0aWxlIHBvdXIgZm9ybXVsYWlyZSBkZSBjcsOpYXRpb25cbiAgICAgICAgICAgICAgICBkZWxldGVDaGVja0JveC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgIC8vIENhc2UgZGUgdmFsaWRhdGlvbiBjYWNow6llIHBhciBkw6lmYXV0LCBjYXIgdXRpbGUgcXVlIGRhbnMgY2VydGFpbnMgY2FzXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbkNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICAgICAgZGl2U3Vic2NyaWJlSW50cm8uaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgZGl2UGF5bWVudHNJbmZvcy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICBkaXZHb2RjaGlsZHNJbmZvcy5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgICAgICAgICAvLyBDZXJ0YWlucyBuYXZpZ2F0ZXVycyBvbnQgdGVuZGFuY2Ugw6AgcmVtcGxpciB0b3V0IHNldWwgbGVzIGNoYW1wcyBjb25maWdVc2Vycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgIG5ld1Bhc3N3b3JkLnZhbHVlPVwiXCI7XG4gICAgICAgICAgICAgICAgLy8gRW4gbW9kZSBjcsOpYXRpb24sIHBhcyBkZSBjaGFtcCBwb3VyIGNoYW5nZXIgbGUgbW90IGRlIHBhc3NlXG4gICAgICAgICAgICAgICAgbmV3UGFzc3dvcmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgIC8vIEludXRpbGUgZW4gbW9kZSBjcsOpYXRpb25cbiAgICAgICAgICAgICAgICB0aW1lRGlmZmVyZW5jZS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbXB0eVVzZXJGb3JtKCk7XG4gICAgICAgICAgICAvLyBJbml0aWFsaXNlIGxlcyBjb250cmFpbnRlcyBkdSBmb3JtdWxhaXJlIDpcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNUb0lucHV0cyhjb25maWdVc2VycywgZm9ybVVzZXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBGb25jdGlvbiBhZmZpY2hhbnQgbGVzIGluZm9zIGNvbm51ZXMgY29uY2VybmFudCB1biB1dGlsaXNhdGV1ciBldCBzb24gYWJvbm5lbWVudFxuICAgICAgICAgICAgY29uc3Qgc2hvd0Zvcm1Vc2VySW5mb3MgPSAoaWQpID0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gb24gY29tbWVuY2UgcGFyIHRvdXQgdmlkZXIsIGRlcyBmb2lzIHF1ZS4uLiA6XG4gICAgICAgICAgICAgICAgZW1wdHlVc2VyRm9ybSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHhockdldEluZm9zID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Mub3BlbihcIkdFVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5nZXRVc2VySW5mb3MraWQpO1xuICAgICAgICAgICAgICAgIHhockdldEluZm9zLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuVXNlciAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFzc3dvcmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRGlmZmVyZW5jZS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcFRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfVVNFUiA6IHJlc3BvbnNlLlVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfQ1JFQSA6IGRhdGVGb3JtYXQocmVzcG9uc2UuVXNlci5jcmVhdGVkQXQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX1VQREFURSA6IGRhdGVGb3JtYXQocmVzcG9uc2UuVXNlci51cGRhdGVkQXQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0NPTk5FQ1RJT04gOiBkYXRlRm9ybWF0KHJlc3BvbnNlLlVzZXIuY29ubmVjdGVkQXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlSW50cm89cmVwbGFjZUFsbChpbmZvc1VzZXJGb3JBZG1pbiwgbWFwVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLlVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmb3JtVXNlci5lbGVtZW50c1tkYXRhXSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuVXNlcltkYXRhXSE9PXRydWUgJiYgcmVzcG9uc2UuVXNlcltkYXRhXSE9PWZhbHNlKS8vIGJvb2zDqWVuID0gY2FzZSDDoCBjb2NoZXIgIVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Vc2VyLmVsZW1lbnRzW2RhdGFdLnZhbHVlPXJlc3BvbnNlLlVzZXJbZGF0YV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5Vc2VyW2RhdGFdPT10cnVlKSAvLyBzaSBmYWxzZSwgb24gbmUgZmFpdCByaWVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVVzZXIuZWxlbWVudHNbXCJcIitkYXRhXS5jaGVja2VkPVwiY2hlY2tlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLlN1YnNjcmlwdGlvbiAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub21icmUgZGUgam91cnMgZGUgbCdhYm9ubmVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Vc2VyLmVsZW1lbnRzW1wibnVtYmVyT2ZEYXlzXCJdLnZhbHVlPXJlc3BvbnNlLlN1YnNjcmlwdGlvbltcIm51bWJlck9mRGF5c1wiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gam91cnMgZGUgcsOpY2VwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UuU3Vic2NyaXB0aW9uLnJlY2VpcHREYXlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVVzZXIuZWxlbWVudHNbXCJkXCIrcmVzcG9uc2UuU3Vic2NyaXB0aW9uLnJlY2VpcHREYXlzW2ldXS5jaGVja2VkPVwiY2hlY2tlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWdpblN1YlRTPW5ldyBEYXRlKHJlc3BvbnNlLlN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuU3Vic2NyaXB0aW9uLm51bWJlck9mRGF5cyAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmJEYXlzT2s9cmVzcG9uc2UuU3Vic2NyaXB0aW9uLm51bWJlck9mRGF5cy1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWJlZ2luU3ViVFMpLzEwMDAvMzYwMC8yNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuYkRheXNPayA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlSW50cm8rPVwiPGJyPlwiK2luZm9zTmJEYXlzQWRtaW4ucmVwbGFjZShcIk5CX0RBWVNcIiwgbmJEYXlzT2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZUludHJvKz1cIjxicj5kZFwiK2luZm9zRXhwaXJhdGVkQWRtaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZTdWJzY3JpYmVJbnRybywgXCJwXCIsIHN1YnNjcmliZUludHJvLCBcIlwiLCBbXCJpbmZvXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U3Vic2NyaWJlSW50cm8sIFwicFwiLCBpc05vdFZhbGlkZWQsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkNoZWNrQm94LnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGVja0JveC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcyBkZSBwYWllbWVudHMgdmlhIEFQSSBXUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhockdldFBheW1lbnRzSW5mb3MgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRQYXltZW50c0luZm9zLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLmdldFBheW1lbnRzK3Jlc3BvbnNlLlVzZXIuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldFBheW1lbnRzSW5mb3Mub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VQYXk9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZVBheS5sZW5ndGghPT0wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dFBheW1lbnRzPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZVBheSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9QQVlNRU5UIDogZGF0ZUZvcm1hdChyZXNwb25zZVBheVtpXS5jcmVhdGVkQXQsIFwiZnJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1PVU5UIDogcmVzcG9uc2VQYXlbaV0uYW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMSUVOVF9OQU1FIDogcmVzcG9uc2VQYXlbaV0uY2xpZW50TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dFBheW1lbnRzKz1cIjxsaT5cIityZXBsYWNlQWxsKGluZm9zTmJEYXlzQWRtaW4sIG1hcFRleHQpK1wiPC9saT5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlBheW1lbnRzSW5mb3MsIFwidWxcIiwgdHh0UGF5bWVudHMsIFwiXCIsIFtcImluZm9cIl0sIFwiXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2UGF5bWVudHNJbmZvcy5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRQYXltZW50c0luZm9zLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldFBheW1lbnRzSW5mb3Muc2VuZCgpOyAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW4gcGFycmFpbiBvdSBkZXV4IHBhciBkZXV4ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXNwb25zZS5Vc2VyLkdvZGZhdGhlcklkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhockdldEdvZEZhdGhlckluZm9zID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldEdvZEZhdGhlckluZm9zLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuZ2V0VXNlckluZm9zK3Jlc3BvbnNlLlVzZXIuR29kZmF0aGVySWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RGYXRoZXJJbmZvcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VHRj1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZUdGLlVzZXIgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZHb2RjaGlsZHNJbmZvcywgXCJwXCIsIGluZm9zQWRtaW5Hb2RmYXRoZXIrXCI8YSBocmVmPScvXCIrY29uZmlnVGVtcGxhdGUudXNlcnNNYW5hZ2VtZW50UGFnZStcIj9pZD1cIityZXNwb25zZUdGLlVzZXIuaWQrXCInPlwiK3Jlc3BvbnNlR0YuVXNlci5uYW1lK1wiPC9hPlwiK1wiLjxicj5cIiwgXCJcIiwgW1wiaW5mb1wiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZHb2RjaGlsZHNJbmZvcy5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kRmF0aGVySW5mb3Muc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RGYXRoZXJJbmZvcy5zZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVzIGZpbGxldWxzID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0R29kY2hpbGRzPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeGhyR2V0R29kY2hpbGRzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyR2V0R29kY2hpbGRzLm9wZW4oXCJHRVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuZ2V0R29kQ2hpbGRzK2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VHUz1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlR1MubGVuZ3RoIT09MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEdvZGNoaWxkcys9aW5mb3NBZG1pbkdvZGZhdGhlci5yZXBsYWNlKFwiI05CXCIsIHJlc3BvbnNlR1MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlR1MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRHb2RjaGlsZHMrPVwiPGEgaHJlZj0nL1wiK2NvbmZpZ1RlbXBsYXRlLnVzZXJzTWFuYWdlbWVudFBhZ2UrXCI/aWQ9XCIrcmVzcG9uc2VHU1tpXS5pZCtcIic+XCIrcmVzcG9uc2VHU1tpXS5uYW1lK1wiPC9hPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdkdvZGNoaWxkc0luZm9zLCBcInBcIiwgdHh0R29kY2hpbGRzK1wiLlwiLCBcIlwiLCBbXCJpbmZvXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdkdvZGNoaWxkc0luZm9zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJHZXRHb2RjaGlsZHMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhockdldEdvZGNoaWxkcy5zZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyR2V0SW5mb3Muc2VuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaSB1biBpZCBlc3QgcGFzc8OpIHBhciBsJ3VybCwgb24gZXNzYXllIGQnYWZmaWNoZXIgbCd1dGlsaXNhdGV1ciA6XG4gICAgICAgICAgICBsZXQgdXJsRGF0YXM9Z2V0VXJsUGFyYW1zKCk7XG4gICAgICAgICAgICBpZih1cmxEYXRhcyAmJiB1cmxEYXRhcy5pZCE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBzaG93Rm9ybVVzZXJJbmZvcyh1cmxEYXRhcy5pZCk7XG5cbiAgICAgICAgICAgIC8vIEJlc29pbiBkJ3VuIGNvdXAgZGUgS8OkcmNoZXIgPyBcbiAgICAgICAgICAgIGJ0bk5ld1VzZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW1wdHlVc2VyRm9ybSgpO1xuICAgICAgICAgICAgfSk7ICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIEVudm9pIGR1IGZvcm11bGFpcmUgZGVzIGluZm9zIGRlIGwndXRpbGlzYXRldXJcbiAgICAgICAgICAgIGZvcm1Vc2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGl2UmVzcG9uc2UuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFzPWdldERhdGFzRnJvbUlucHV0cyhmb3JtVXNlcik7XG4gICAgICAgICAgICAgICAgLy8gcmVjb21wb3NpdGlvbiBkZXMgam91cnMgdmFsYWJsZXMgcG91ciBsJ2Fib25uZW1lbnQgOlxuICAgICAgICAgICAgICAgIGRhdGFzLnJlY2VpcHREYXlzPVwiXCI7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTE7IGk8PTc7IGkrKylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzW1wiZFwiK2ldIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXMucmVjZWlwdERheXMrPVwiXCIraTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyVXNlckRhdGFzID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkoZGF0YXMuaWQpICYmIChkYXRhcy5kZWxldGVPayE9PXVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5vcGVuKFwiREVMRVRFXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK1wiL1wiK2RhdGFzLmlkKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSAmJiAoZGF0YXMudmFsaWRhdGlvbk9rIT09dW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLm9wZW4oXCJQT1NUXCIsIGFwaVVybCtjb25maWdVc2Vycy51c2VyUm91dGVzK2NvbmZpZ1VzZXJzLnZhbGlkYXRlVXNlclJvdXRlK2RhdGFzLmlkKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCFpc0VtcHR5KGRhdGFzLmlkKSlcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLm9wZW4oXCJQVVRcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMudXBkYXRlVXNlckluZm9zK2RhdGFzLmlkKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhcy5wYXNzd29yZD1nZXRQYXNzd29yZChjb25maWdVc2Vycy5wYXNzd29yZC5taW5sZW5ndGgsIGNvbmZpZ1VzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCsyKTsvLyBtb3QgZGUgcGFzc2UgdGVtcG9yYWlyZVxuICAgICAgICAgICAgICAgICAgICB4aHJVc2VyRGF0YXMub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuY3JlYXRlVXNlclJvdXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgcmVzcG9uc2UuaWQhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgYWRkT2tNZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcy5pZD1yZXNwb25zZS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLmVycm9ycywgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNFbXB0eShyZXNwb25zZS5lcnJvcnMpKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFzLmRlbGV0ZU9rPT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm9ybVVzZXJJbmZvcyhkYXRhcy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eVVzZXJGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhoclVzZXJEYXRhcy5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlckRhdGFzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBUcmFpdGVtZW50IGR1IGxhbmNlbWVudCBkJ3VuZSByZWNoZXJjaGVcbiAgICAgICAgICAgIGZvcm1TZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1TZWFyY2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHhoclNlYXJjaCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5zZWFyY2hVc2VyUm91dGUpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmxlbmd0aD09PTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2U2VhcmNoUmVzdWx0LCBcInBcIiwgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0LCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0SFRNTD1cIjxvcHRpb24gdmFsdWU9Jyc+PC9vcHRpb24+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEhUTUwrPVwiPG9wdGlvbiB2YWx1ZT0nXCIrcmVzcG9uc2VbaV0uaWQrXCInPlwiK3Jlc3BvbnNlW2ldLm5hbWUrXCIgKFwiK3Jlc3BvbnNlW2ldLmVtYWlsK1wiKTwvb3B0aW9uPlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJzZWxlY3RcIiwgc2VsZWN0SFRNTCwgXCJzZWxlY3RTZWFyY2hcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFNlbGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlbGVjdFNlYXJjaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWFyY2hTZWxlY3QudmFsdWUhPT1cIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtVXNlckluZm9zKHNlYXJjaFNlbGVjdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlNlYXJjaFJlc3VsdCwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgICAgICAgICAgIHhoclNlYXJjaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICBpZihkYXRhcylcbiAgICAgICAgICAgICAgICAgICAgeGhyU2VhcmNoLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdkNyYXNoLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIHLDqWN1cMOpcmFudCBsZXMgcGFyYW3DqHRyZXMgcGFzc8OpcyBwYXIgbCd1cmxcbmV4cG9ydCBjb25zdCBnZXRVcmxQYXJhbXMgPSAoKSA9Plxue1xuICAgIGlmKGlzRW1wdHkobG9jYXRpb24uc2VhcmNoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoXCImXCIpO1xuICAgIGlmKCFBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpIHx8IHBhcmFtZXRlcnMubGVuZ3RoPT09MClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBcbiAgICBsZXQgcGFyYW0sIGRhdGFzPXt9O1xuICAgIGZvcihsZXQgaSBpbiBwYXJhbWV0ZXJzKVxuICAgIHtcbiAgICAgICAgcGFyYW0gPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgaWYocGFyYW0ubGVuZ3RoPT09MilcbiAgICAgICAgICAgIGRhdGFzW3BhcmFtWzBdXT1kZWNvZGVVUkkocGFyYW1bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/newLoginValidation.app.js b/front/public/JS/newLoginValidation.app.js index 861c982..c640dad 100644 --- a/front/public/JS/newLoginValidation.app.js +++ b/front/public/JS/newLoginValidation.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -586,99 +595,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1282,4 +1270,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9uZXdMb2dpblZhbGlkYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJkaXZSZXNwb25zZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJoZWxsb0RldiIsImluaXRpYWxpc2UiLCJkYXRhcyIsImdldFVybFBhcmFtcyIsInQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzIiwibWVzc2FnZSIsInNhdmVMb2NhbHkiLCJjb2xvciIsImFkZEVsZW1lbnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImFzc2lnbiIsImVycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsInNldFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiZ2V0TG9jYWx5IiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVMb2NhbHkiLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiaW5uZXJIVE1MIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsImNvbmZpZ1RlbXBsYXRlIiwibGluayIsImhvbWVQYWdlIiwicGFyYW1ldGVycyIsInNwbGl0IiwicGFyYW0iLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsInRva2VuIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJjaGVja1Nlc3Npb24iLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwidXNlciIsIm5vdyIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwiaW5kZXhPZiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEZBLElBQU1BLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyxtQ0FBRCxDQUFyQjs7QUFDQSxJQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMscURBQUQsQ0FBOUI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUDtBQUVJQyxRQUFNLEVBQUUsMkJBRlo7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Q0F6RU0sQyxDQTBFUDs7QUFDQSxNQUFNMkQsWUFBWSxHQUFHLENBQUNOLGNBQUQsRUFBaUJoRSxPQUFqQixFQUEwQmlFLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDMUssMkRBQU8sQ0FBQ3lHLE9BQUQsQ0FBWCxFQUNJQyxvRUFBVSxDQUFDLFNBQUQsRUFBWUQsT0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDekcsMkRBQU8sQ0FBQzBLLFNBQUQsQ0FBWCxFQUNJaEUsb0VBQVUsQ0FBQyxLQUFELEVBQVFnRSxTQUFSLENBQVY7QUFDSixNQUFHLENBQUMxSywyREFBTyxDQUFDeUssY0FBRCxDQUFYLEVBQ0k1RCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLE1BQWhCLENBQXVCMEQsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9uZXdMb2dpblZhbGlkYXRpb24uYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbmV3TG9naW5WYWxpZGF0aW9uLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBQQUdFIFBFUk1FVFRBTlQgREUgVkFMSURFUiBVTiBDSEFOR0VNRU5UIEQnRU1BSUwgT1UgREUgTU9UIERFIFBBU1NFXG5cbi8vLyBVbiB0b2tlbiBlc3QgdHJhbnNtaXMgZW4gcGFyYW3DqHRyZSBkZSBsJ1VybC4gSWwgYSB1bmUgdmFsaWRpdMOpIGxpbWl0w6kgZGFucyBsZSB0ZW1wcy5cbi8vLyBTaSBsZSB0b2tlbiBlc3Qgb2ssIG9uIHZhbGlkZSBsYSBtaXNlIMOgIGpvdXIgZXQgcmVkaXJpZ2UgbCd1dGlsaXNhdGV1ciB2ZXJzIHNhIHBhZ2UgZCdhY2N1ZWlsXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IHsgYWNjb3VudFBhZ2UsIHVzZXJIb21lUGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjaGVja05ld0xvZ2luTGlua1JvdXRlLCB1c2VyUm91dGVzIH0gPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpO1xuXG4vLyBJbXBvcnRhdGlvbiBkZXMgZm9uY3Rpb25zIHV0aWxlIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXRVcmxQYXJhbXMgfSBmcm9tIFwiLi90b29scy91cmwuanNcIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiwgc2V0U2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICBpZihkYXRhcyAmJiBkYXRhcy50IT09dW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTmV3TG9naW5MaW5rUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSwgY29sb3I6XCJzdWNjZXNzXCIgfSk7Ly8gcG91ciBsJ2FmZmljaGVyIHN1ciBsYSBwYWdlIHN1aXZhbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7Ly8gYXUgY2FzIG/DucKgYmxvY2FnZSByZWRpcmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIit1c2VySG9tZVBhZ2UpOy8vIHF1ZSB1c2VyIHBvc3NpYmxlIGljaVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSA0MDQgJiYgcmVzcG9uc2UuZXJyb3JzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBhY2NvdW50UGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIHLDqWN1cMOpcmFudCBsZXMgcGFyYW3DqHRyZXMgcGFzc8OpcyBwYXIgbCd1cmxcbmV4cG9ydCBjb25zdCBnZXRVcmxQYXJhbXMgPSAoKSA9Plxue1xuICAgIGlmKGlzRW1wdHkobG9jYXRpb24uc2VhcmNoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoXCImXCIpO1xuICAgIGlmKCFBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpIHx8IHBhcmFtZXRlcnMubGVuZ3RoPT09MClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBcbiAgICBsZXQgcGFyYW0sIGRhdGFzPXt9O1xuICAgIGZvcihsZXQgaSBpbiBwYXJhbWV0ZXJzKVxuICAgIHtcbiAgICAgICAgcGFyYW0gPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgaWYocGFyYW0ubGVuZ3RoPT09MilcbiAgICAgICAgICAgIGRhdGFzW3BhcmFtWzBdXT1kZWNvZGVVUkkocGFyYW1bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9uZXdMb2dpblZhbGlkYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXJsLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91c2Vycy5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZE1pbkxlbmd0aCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbHJlYWR5Q29ubmVjdGVkIiwiYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlIiwiYmFkUGFzc3dvcmQiLCJieWVieWVNZXNzYWdlIiwiY29ubmVjdGlvbk9rIiwiY3JlYXRpb25Pa01lc3NhZ2UiLCJjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlIiwiZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2UiLCJlbWFpbE5vdEZvdW5kIiwiZmFpbEJvdFRlc3QiLCJmYWlsQm90VGVzdExvZyIsImZvcm1zRW1haWxMYWJlbCIsImZvcm1zRW1haWxQbGFjZWhvbGRlciIsImZvcm1zRW1haWwyUGxhY2Vob2xkZXIiLCJmb3Jtc0NHVU9rTGFiZWwiLCJmb3Jtc1N1Ym1pdFR4dCIsImdvZGZhdGhlckZvdW5kIiwiZ29kZmF0aGVyTm90Rm91bmQiLCJpbmZvc0FkbWluR29kZmF0aGVyIiwiaW5mb3NBZG1pbk5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyRm9yQWRtaW4iLCJpbmZvc1VzZXJOYkdvZENoaWxkcyIsImluZm9zVXNlck5vR29kY2hpbGRzIiwibWFpbERlbGV0ZUJvZHlIVE1MIiwibWFpbERlbGV0ZUJvZHlUeHQiLCJtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rT2tNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtUeHQiLCJtYWlsRGVsZXRlU3ViamVjdCIsIm1haWxMb2dpbkxpbmtCb2R5SFRNTCIsIm1haWxMb2dpbkxpbmtCb2R5VHh0IiwibWFpbExvZ2luTGlua01lc3NhZ2UiLCJtYWlsTG9naW5MaW5rU3ViamVjdCIsIm1haWxMb2dpbkxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCIsIm1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIiwibWFpbFVwZGF0ZUxvZ2luQm9keVR4dCIsIm1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luTGlua1R4dCIsIm1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpblN1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwiLCJtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCIsIm1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QiLCJtYWlsVmFsaWRhdGlvbkxpbmtUeHQiLCJtYWlsVmFsaWRhdGlvbk1lc3NhZ2UiLCJtYWlsV2VsY29tZUJvZHlIVE1MIiwibWFpbFdlbGNvbWVCb2R5VHh0IiwibWFpbFdlbGNvbWVMaW5rVHh0IiwibWFpbFdlbGNvbWVTdWJqZWN0IiwibmVlZEJlQ29ubmVjdGVkIiwibmVlZENob29zZUxvZ2luV2F5IiwibmVlZEVtYWlsIiwibmVlZEtub3dOZXdzbGV0dGVyT2siLCJuZWVkTGFuZ3VhZ2UiLCJuZWVkTG9uZ1Bhc3NXb3JkIiwibmVlZE1heFRpbWVEaWZmZXJlbmNlIiwibmVlZE1pblRpbWVEaWZmZXJlbmNlIiwibmVlZE5hbWUiLCJuZWVkTm90VG9vTG9uZ05hbWUiLCJuZWVkTm90VG9vTG9uZ0VtYWlsIiwibmVlZFBhc3NXb3JkIiwibmVlZFNNVFAiLCJuZWVkU01UUE5vdEZvdW5kIiwibmVlZFN0YXR1cyIsIm5lZWRUaW1lRGlmZmVyZW5jZSIsIm5lZWRVR0NPayIsIm5lZWRVbmlxdWVFbWFpbCIsIm5lZWRWYWxpZGF0aW9uVG9Mb2dpbiIsIm5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSIsInBhc3N3b3JkQ29waWVkIiwic2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0IiwidG9vTWFueUxvZ2luRmFpbHMiLCJ1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQiLCJ1cGRhdGVkTmVlZEdvb2RFbWFpbCIsInVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciIsInVwZGF0ZWROZWVkVW5pcXVlRW1haWwiLCJ1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXIiLCJ1cGRhdGVkT2tNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlIiwidmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW4iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlQWRtaW4iLCJ3ZWxjb21lTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImRpdlJlc3BvbnNlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImRhdGFzIiwiZ2V0VXJsUGFyYW1zIiwidCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzdGF0dXMiLCJtZXNzYWdlIiwic2F2ZUxvY2FseSIsImNvbG9yIiwiYWRkRWxlbWVudCIsIndpbmRvdyIsImxvY2F0aW9uIiwiYXNzaWduIiwiZXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5Iiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJlIiwiY29uc29sZSIsImVycm9yIiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJnZXRMb2NhbHkiLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUxvY2FseSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJzZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsImxvZyIsInVwZGF0ZUFjY291bnRMaW5rIiwiY29uZmlnVGVtcGxhdGUiLCJsaW5rIiwiaG9tZVBhZ2UiLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRlY29kZVVSSSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsImNoZWNrU2Vzc2lvbiIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ1c2VyIiwibm93Iiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxNQUFNQSxLQUFLLEdBQUdDLG1CQUFP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LFNBQTFCLENBQVo7QUFDQUUscUJBQU8sQ0FBQyxLQUFELENBQVA7QUFDSDtBQUNKLFdBbENELE1Bb0NBO0FBQ0k3QyxrRkFBWSxDQUFDLE1BQUQsQ0FBWjtBQUNBZ0Qsd0JBQVksQ0FBQ04sY0FBRCxFQUFpQmhFLE9BQWpCLEVBQTBCaUUsU0FBMUIsQ0FBWjtBQUNBRSxtQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUNIO0FBQ0osU0E1Q0Q7O0FBNkNBOUUsV0FBRyxDQUFDMkYsT0FBSixHQUFjLE1BQU1aLE1BQU0sQ0FBQy9FLEdBQUcsQ0FBQzRGLFVBQUwsQ0FBMUI7O0FBQ0E1RixXQUFHLENBQUNzQixJQUFKO0FBQ0g7QUFDSjtBQUNKLEdBdEVNLENBQVA7QUF1RUgsQ0F6RU0sQyxDQTBFUDs7QUFDQSxNQUFNMkQsWUFBWSxHQUFHLENBQUNOLGNBQUQsRUFBaUJoRSxPQUFqQixFQUEwQmlFLFNBQTFCLEtBQ3JCO0FBQ0ksTUFBRyxDQUFDcEwsMkRBQU8sQ0FBQ21ILE9BQUQsQ0FBWCxFQUNJQyxvRUFBVSxDQUFDLFNBQUQsRUFBWUQsT0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDbkgsMkRBQU8sQ0FBQ29MLFNBQUQsQ0FBWCxFQUNJaEUsb0VBQVUsQ0FBQyxLQUFELEVBQVFnRSxTQUFSLENBQVY7QUFDSixNQUFHLENBQUNwTCwyREFBTyxDQUFDbUwsY0FBRCxDQUFYLEVBQ0k1RCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLE1BQWhCLENBQXVCMEQsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9uZXdMb2dpblZhbGlkYXRpb24uYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvbmV3TG9naW5WYWxpZGF0aW9uLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci91c2VyXCI6IFwiLi4vbGFuZy9mci91c2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvdXNlciRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWRkQnRuVHh0OiBcIkFqb3V0ZXJcIixcbiAgICBhZGRPa01lc3NhZ2UgOiBcIkxlcyBkb25uw6llcyBvbnQgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWVzLlwiLFxuICAgIGFsZXJ0TmV3V2luZG93OiBcIm5vdXZlbGxlIGZlbsOqdHJlXCIsXG4gICAgYmFkVXJsIDogXCJUZW50YXRpdmUgZCdhY2PDqHMgw6AgdW5lIHBhZ2UgbidleGlzdGFudCBwYXMgOlwiLFxuICAgIGJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUgOiBcIkFmZmljaGVyICFcIixcbiAgICBidG5Qcm9wb3NlQ29ubmVjdGlvbjogXCJKZSBtZSBjb25uZWN0ZS5cIixcbiAgICBidG5Qcm9wb3NlU3Vic2NyaWJlOiBcIkplIGNyw6llIG1vbiBjb21wdGUuXCIsXG4gICAgYnRuU2hvd09uV2ViU2l0ZTogXCJMaXJlIGxhIHN1aXRlIHN1ciAjU0lURV9OQU1FXCIsXG4gICAgZGVsZXRlQnRuVHh0OiBcIlN1cHByaW1lclwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBkZSBsJ2VucmVnaXN0cmVtZW50ICNJRCBhIMOpY2hvdcOpLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBmYWlsQXV0aCA6IFwiRXJyZXVyIGQnYXV0aGVudGlmaWNhdGlvbi5cIixcbiAgICBmYWlsQXV0aENyb24gOiBcIlRlbnRhdGl2ZSBkZSBsYW5jZW1lbnQgZCd1biBjcm9uIHNhbnMgbGUgYm9uIHRva2VuLlwiLFxuICAgIGZhaWxBdXRoSGVhZGVyIDogXCJBYnNlbmNlIGRlIGhlYWRlciBBdXRob3JpemF0aW9uLlwiLFxuICAgIGZhaWxBdXRoSWQgOiBcIklkZW50aWZpYW50IG5vbiB2YWxpZGUgOiBcIixcbiAgICBmYWlsQXV0aFRva2VuIDogXCJUb2tlbiBpbnZhbGlkZSBvdSB1dGlsaXNhdGV1ciBub24gdHJvdXbDqS5cIixcbiAgICBuZWVkZWRQYXJhbXMgOiBcIkRlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgbWFucXVhbnRzIHNvbnQgbWFucXVhbnRzLlwiLFxuICAgIG5leHRQYWdlIDogXCJQYWdlIHN1aXZhbnRlXCIsXG4gICAgbm90QWxsb3dlZCA6IFwiVm91cyBuJ2F2ZXogcGFzIGxlcyBkcm9pdHMgbsOpY2Vzc2FpcmVzIHBvdXIgY2V0dGUgYWN0aW9uLlwiLFxuICAgIG5vdFJlcXVpcmVkIDogXCJGYWN1bHRhdGlmLlwiLFxuICAgIG5vdFZhbGlkRm9ybWF0IDogXCJGb3JtYXQgbm9uIHZhbGlkZS5cIixcbiAgICBwcmV2aW91c1BhZ2UgOiBcIlBhZ2UgcHLDqWPDqWRlbnRlXCIsXG4gICAgc2VydmVyRXJyb3IgOiBcIkTDqXNvbMOpLiBVbmUgZXJyZXVyIGltcHLDqXZ1ZSBlc3Qgc3VydmVudWUuIFNpIGNlbGEgcGVyc2lzdGUsIG4naMOpc2l0ZXogw6AgcHLDqXZlbmlyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBzZXJ2ZXJFcnJvckFkbWluIDogXCJCdWcgZGUgbCdhcHBsaWNhdGlvbiA6XCIsXG4gICAgc2l0ZUhUTUxUaXRsZSA6IFwiV2lraUxlcm5pIDogbGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgc2l0ZU1ldGFEZXNjcmlwdGlvbiA6IFwiQXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXMuIFZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy4gRGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS5cIixcbiAgICBzY3JpcHRUaW1pbmdBbGVydCA6IFwiKioqIFNjcmlwdCBsZW50IDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzY3JpcHRUaW1pbmdJbmZvIDogXCJEdXLDqWUgZGUgbGEgcsOpcG9uc2UgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHN0YXRzQWRtaW4gOiBcIkR1cmFudCBsZXMgZGVybmnDqHJlcyAyNGggOiBOQl9VU0VSU18yNEggY29tcHRlcyBvbnQgw6l0w6kgY3LDqcOpcywgTkJfU1VCU0NSSVBUSU9OU18yNEggdmFsaWTDqXMgZXQgTkJfVVNFUlNfREVMRVRFRF8yNEggc3VwcHJpbcOpcy4gTkJfQU5TV0VSU18yNEggcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+RW4gdG91dCwgaWwgeSBhIDogTkJfVVNFUlNfVE9UIGNvbXB0ZXMsIGRvbnQgTkJfU1VCU0NSSVBUSU9OU19UT1QgdmFsaWTDqXMgZXQgTkJfU1VCU0NSSVBUSU9OU19QUkVNSVVNIGNvbXB0ZXMgcHLDqW1pdW0uIE5CX0FOU1dFUlNfVE9UIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPlBhcm1pIGxlcyBOQl9VU0VSU19ERUxFVEVEX1RPVCBjb21wdGVzIHN1cHByaW3DqXMsIE5CX1VTRVJTX0RFTEVURURfVkFMSURFRCBhdmFpZW50IHZhbGlkw6kgbGV1ciBjb21wdGUgZXQgTkJfVVNFUlNfREVMRVRFRF9QUkVNSVVNIGF2YWllbnQgc291c2NyaXQgdW4gY29tcHRlIHByw6ltaXVtLlwiLFxuICAgIHN1YnNjcmlwdGlvbkNhbGw6IFwiSW5zY3JpdmV6LXZvdXMgIVwiLFxuICAgIHVwZGF0ZUJ0blR4dDogXCJNb2RpZmllclwiLFxuICAgIHVwZGF0ZU9rTWVzc2FnZSA6IFwiTGEgbWlzZSDDoCBqb3VyIMOgIGpvdXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIlxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYWxyZWFkeUNvbm5lY3RlZDogXCJWb3VzIMOqdGVzIGTDqWrDoCBjb25uZWN0w6kgYXUgc2l0ZSAhXCIsXG4gICAgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgY29uZmlybWF0aW9uIG5lIHNlbWJsZSBwYXMgdmFsaWRlIG91IGJpZW4gaWwgYSBleHBpcsOpLiBWb3VzIHBvdXZleiBlbiByZWNldm9pciB1biBub3V2ZWF1IDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgYmFkUGFzc3dvcmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgYXV4IGluZm9ybWF0aW9ucyBzYWlzaWVzLlwiLFxuICAgIGJ5ZWJ5ZU1lc3NhZ2U6IFwiU2kgdm91cyB2b3lleiBjZSBtZXNzYWdlLCBjJ2VzdCBxdWUgdm90cmUgZMOpY29ubmV4aW9uIHMnZXN0IGJpZW4gZMOpcm91bMOpZS48YnI+w4AgYmllbnTDtHQgIVwiLCBcbiAgICBjb25uZWN0aW9uT2s6IFwiQ29ubmV4aW9uIHLDqXVzc2llLlwiLFxuICAgIGNyZWF0aW9uT2tNZXNzYWdlOiBcIkxlIG5vdXZlbCB1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6kuXCIsXG4gICAgY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgbm9uIHZhbGlkw6lzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZUZhaWxNZXNzYWdlOiBcIlRlbnRhdGl2ZSBkZSBzdXBwcmVzc2lvbiBkJ3VuIHV0aWxpc2F0ZXVyIGluZXhpc3RhbnQgOiBcIixcbiAgICBkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZTogXCIgY29tcHRlcyB1dGlsaXNhdGV1cnMgaW5hY3RpZnMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlOiBcIkwndXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS5cIixcbiAgICBlbWFpbE5vdEZvdW5kOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIGZhaWxCb3RUZXN0OiBcIlVuIHByb2Jsw6htZSBhIMOpdMOpIHJlbmNvbnRyw6kgZHVyYW50IHZvdHJlIGluc2NyaXB0aW9uLiBFbiBjYXMgZGUgZGlmZmljdWx0w6ksIG4naMOpc2l0ZXogcGFzIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgZmFpbEJvdFRlc3RMb2c6IFwiVW5lIGluc2NyaXB0aW9uIGEgw6l0w6kgYmxvcXXDqWUsIHBhcmNlIHF1ZSBsZSBjaGFtcCBlbWFpbDIgw6l0YWl0IHJlbnNlaWduw6kgYXZlYyA6IFwiLFxuICAgIGZvcm1zRW1haWxMYWJlbDogXCJFLW1haWwgOlwiLFxuICAgIGZvcm1zRW1haWxQbGFjZWhvbGRlcjogXCJWb3RyZSBhZHJlc3NlIGUtbWFpbFwiLFxuICAgIGZvcm1zRW1haWwyUGxhY2Vob2xkZXI6IFwiU2kgdm91cyB2b3lleiBjZSBjaGFtcCwgbGFpc3Nlei1sZSB2aWRlXCIsLy9jaGFtcCBxdWkgbmUgZGV2cmFpdCBwYXMgw6p0cmUgdmlzaWJsZSBwYXIgZGVzIGh1bWFpbnNcbiAgICBmb3Jtc0NHVU9rTGFiZWw6IFwiSidhY2NlcHRlIDxhIGhyZWY9I2xpbmsgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiIHJlbD1cXFwibm9vcGVuZXJcXFwiIHRpdGxlPVxcXCLDgCBsaXJlIDopXFxcIj5sZXMgQ29uZGl0aW9ucyBHw6luw6lyYWxlIGQnVXRpbGlzYXRpb248L2E+IGR1IHNpdGUgKHJlcXVpcykuXCIsXG4gICAgZm9ybXNTdWJtaXRUeHQ6IFwiSmUgbSdhYm9ubmUgIVwiLFxuICAgIGdvZGZhdGhlckZvdW5kOiBcIlZvdHJlIFxcXCJwYXJyYWluXFxcIiBhIGJpZW4gw6l0w6kgdHJvdXbDqS4gQ2V0dGUgcGVyc29ubmUgc2VyYSBhdmVydGllIHF1ZSB2b3VzIGwnYXZleiBkw6lzaWduw6llLlwiLFxuICAgIGdvZGZhdGhlck5vdEZvdW5kOiBcIkTDqXNvbMOpIG1haXMgYXVjdW4gdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZSBjb2RlIC8gZS1tYWlsIGRlIHBhcnJhaW5hZ2UgOihcIixcbiAgICBpbmZvc0FkbWluR29kZmF0aGVyOiBcIkNldCB1dGlsaXNhdGV1ciBhIMOpdMOpIHBhcnJhaW7DqSBwYXIgXCIsXG4gICAgaW5mb3NBZG1pbk5iR29kQ2hpbGRzOiBcIlNlcyAjTkIgZmlsbGV1bHMgOiBcIixcbiAgICBpbmZvc1VzZXJGb3JBZG1pbjogXCJDZXQgdXRpbGlzYXRldXIgKGlkOiBJRF9VU0VSKSBhIDxiPmNyw6nDqSBzb24gY29tcHRlIGxlIERBVEVfQ1JFQTwvYj4sIGxhIGRlcm5pw6hyZSBtaXNlIMOgIGpvdXIgZGF0YW50IGR1IERBVEVfVVBEQVRFLjxicj48Yj5EYXRlIGRlIHNhIGRlcm5pw6hyZSBjb25uZXhpb24gOiBEQVRFX0NPTk5FQ1RJT04uPC9iPlwiLFxuICAgIGluZm9zVXNlck5iR29kQ2hpbGRzOiBcIlZvaWNpIGxlcyAjTkIgdXRpbGlzYXRldXIocykgaW5zY3JpdChzKSBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiIDogXCIsXG4gICAgaW5mb3NVc2VyTm9Hb2RjaGlsZHM6IFwiUG91ciBsJ2luc3RhbnQsIGF1Y3VuZSBwZXJzb25uZSBuZSBzJ2VzdCBpbnNjcml0ZSwgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIi5cIixcbiAgICBtYWlsRGVsZXRlQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsRGVsZXRlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtGYWlsTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIHN1cHByZXNzaW9uIG4nZXN0IHBhcyB2YWxpZGUgb3UgYWxvcnMgaWwgYSBleHBpcsOpLlwiLFxuICAgIG1haWxEZWxldGVMaW5rTWVzc2FnZTogXCJWb3RyZSBkZW1hbmRlIGRlIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuIE1lcmNpIGRlIGNsaXF1ZXIgc2FucyB0YXJkZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsIHBvdXIgY29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVMaW5rT2tNZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLiBNZXJjaSBkJ2F2b2lyIHV0aWxpc8OpIG5vcyBzZXJ2aWNlcy5cIixcbiAgICBtYWlsRGVsZXRlTGlua1R4dCA6IFwiQ29uZmlybWVyLlwiLFxuICAgIG1haWxEZWxldGVTdWJqZWN0IDogXCJDb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6PC9wPlwiLFxuICAgIG1haWxMb2dpbkxpbmtCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxMb2dpbkxpbmtNZXNzYWdlIDogXCJVbiBsaWVuIGRlIGNvbm5leGlvbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLiBOZSB0YXJkZXogcGFzIMOgIGwndXRpbGlzZXIsIGNhciBpbCBuJ2VzdCB2YWxhYmxlIHF1ZSBkdXJhbnQgKlRJTUlORyogIVwiLFxuICAgIG1haWxMb2dpbkxpbmtTdWJqZWN0IDogXCJWb3RyZSBsaWVuIGRlIGNvbm5leGlvbi5cIixcbiAgICBtYWlsTG9naW5MaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS48YnI+U2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy48L3A+PHA+RW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICE8L3A+XCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuR3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLlxcblNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuXFxuRW5jb3JlIG1lcmNpIGV0IMOgIGJpZW50w7R0ICFcIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IDogXCJNZXJjaSAhXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIHNhbnMgdGFyZGVyLjwvcD5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZTogXCJDZXBlbmRhbnQsIHZvdXMgYXZleiBtb2RpZmnDqSBhdSBtb2lucyB1biBkZSB2b3MgaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiAoZS1tYWlsIGV0L291IG1vdCBkZSBwYXNzZSkgZXQgPGI+dm91cyBkZXZleiBjbGlxdWVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlcyBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIChORVdfRU1BSUwpIHBvdXIgdmFsaWRlciBjZSBjaGFuZ2VtZW50PC9iPi48YnI+RW4gYXR0ZW5kYW50LCBtZXJjaSBkZSBjb250aW51ZXIgw6AgdXRpbGlzZXIgdm9zIGFuY2llbnMgaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtUeHQgOiBcIlZhbGlkZXIuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlOiBcIkxhIG1pc2Ugw6Agam91ciBkZSB2b3MgaWRlbnRpZmlhbnRzIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gY2ktZGVzc291cyBkYW5zIGxlcyAyNGguPC9wPlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBzdWl2YW50IGRhbnMgbGVzIDI0aCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rVHh0IDogXCJWYWxpZGVyIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGluc2NyaXB0aW9uIGVzdCBiaWVuIGVucmVnaXN0csOpZS5cXG5Qb3VyIGxhIGZpbmFsaXNlciwgbWVyY2kgZGUgY2xpcXVlciBkYW5zIGxlcyAyNCBIIHN1ciBsZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBxdWkgdmllbnQgZCfDqnRyZSBlbnZvecOpIMOgIHZvdHJlIGFkcmVzc2UgZS1tYWlsICgjRU1BSUwpLlwiLFxuICAgIG1haWxXZWxjb21lQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+PGJyPlNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCA8Yj5FTUFJTDwvYj4uPGJyPjxicj5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciA8Yj5FTUFJTDwvYj4gw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgPGI+cG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIDxpPnNwYW08L2k+PC9iPi48YnI+PGJyPlBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLjxicj48YnI+UG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBjaS1kZXNzb3VzLjxicj48YnI+w4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgIVxcblxcblNpIHZvdXMgYXZleiBsYSBtb2luZHJlIHF1ZXN0aW9uIG91IHN1Z2dlc3Rpb24gY29uY2VybmFudCBOT01fU0lURSwgbidow6lzaXRleiBwYXMgw6AgbWUgY29udGFjdGVyIGVuIMOpY3JpdmFudCDDoCBFTUFJTC5cXG5cXG5KZSB2b3VzIGNvbnNlaWxsZSBkJ2FpbGxldXJzIGQnYWpvdXRlciBFTUFJTCDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyBwb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gXFxcInNwYW1cXFwiLlxcblxcblBhciBhaWxsZXVycywgcG91ciBnw6lyZXIgdm90cmUgYWJvbm5lbWVudCwgYWNjw6lkZXIgw6Agdm9zIGluZm9ybWF0aW9ucyBvdSBlbmNvcmUgY2hlcmNoZXIgcGx1cyBmYWNpbGVtZW50IHBhcm1pIGxlIGNvbnRlbnUgZHUgc2l0ZSwgdm91cyBwb3V2ZXogw6AgdG91dCBtb21lbnQgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIHV0aWxpc2F0ZXVyLlxcblxcblBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gc3VpdmFudCA6IExJTktfVVJMXFxuXFxuw4AgYmllbnTDtHQgc3VyIE5PTV9TSVRFLlwiLFxuICAgIG1haWxXZWxjb21lTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFdlbGNvbWVTdWJqZWN0IDogXCJCaWVudmVudWUgIVwiLFxuICAgIG5lZWRCZUNvbm5lY3RlZDogXCJWb3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIHBhZ2UuXCIsXG4gICAgbmVlZENob29zZUxvZ2luV2F5OiBcIlZvdXMgZGV2ZXogc29pdCBzYWlzaXIgdm90cmUgbW90IGRlIHBhc3NlLCBzb2l0IGNvY2hlciBsYSBjYXNlIHZvdXMgcGVybWV0dGFudCBkZSByZWNldm9pciB1biBsaWVuIGRlIGNvbm5leGlvbiBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgbmVlZEtub3dOZXdzbGV0dGVyT2sgOiBcIklsIGZhdXQgc2F2b2lyIHNpIGwndXRpbGlzYXRldXIgYWNjZXB0ZSBvdSByZWZ1c2UgZGUgcmVjZXZvaXIgbGEgbmV3c2xldHRlci5cIixcbiAgICBuZWVkTGFuZ3VhZ2UgOiBcIklsIG1hbnF1ZSBsZSBjb2RlIGxhbmd1ZS5cIixcbiAgICBuZWVkTG9uZ1Bhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZSBkJ2F1IG1vaW5zIE1JTl9MRU5HVEggY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE1heFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgYWpvdXRlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA4NDAuXCIsXG4gICAgbmVlZE1pblRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGZvdXJuaXIgdW4gbm9tYnJlIGRlIG1pbnV0ZXMgw6AgZW5sZXZlciDDoCBsJ2hldXJlIEdNVCBuZSBkw6lwYXNzYW50IHBhcyA3MjAuXCIsXG4gICAgbmVlZE5hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ci5cIixcbiAgICBuZWVkTm90VG9vTG9uZ05hbWU6IFwiTWVyY2kgZGUgY2hvaXNpciB1biBub20gZCd1dGlsaXNhdGV1ciBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSA3MCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTm90VG9vTG9uZ0VtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB1bmUgYWRyZXNzZSBlLW1haWwgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgMjU1IGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UuXCIsXG4gICAgbmVlZFNNVFAgOiBcIklsIG1hbnF1ZSBsZSBzZXJ2ZXVyIFNNVFAuXCIsXG4gICAgbmVlZFNNVFBOb3RGb3VuZCA6IFwiSWwgbWFucXVlIHVuIHNlcnZldXIgU01UUCB2YWxpZGUuXCIsXG4gICAgbmVlZFN0YXR1cyA6IFwiSWwgbWFucXVlIGxlIHN0YXR1dC5cIixcbiAgICBuZWVkVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgY29ubmHDrnRyZSBsZSBub21icmUgZGUgbWludXRlcyBkdSBkw6ljYWxhZ2UgaG9yYWlyZS5cIixcbiAgICBuZWVkVUdDT2sgOiBcIk1lcmNpIGQnYWNjZXB0ZXIgbGVzIENHVSBwb3VyIGNyw6llciB2b3RyZSBjb21wdGUuXCIsXG4gICAgbmVlZFVuaXF1ZUVtYWlsOiBcIkwnYWRyZXNzZSBlLW1haWwgcXVlIHZvdXMgYXZleiBzYWlzaWUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBjb21wdGUgdXRpbGlzYXRldXIuIFNpIHZvdXMgYXZleiBkw6lqw6AgdW4gY29tcHRlLCA8YSBocmVmPScvI1VSTCc+Y2xpcXVlei1pY2kgcG91ciB2b3VzIGNvbm5lY3RlcjwvYT4uXCIsXG4gICAgbmVlZFZhbGlkYXRpb25Ub0xvZ2luIDogXCJWb3VzIGRldmV6IGQnYWJvcmQgdmFsaWRlciB2b3RyZSBjb21wdGUgYXZhbnQgZGUgcG91dm9pciB2b3VzIGNvbm5lY3Rlci4gUG91ciBjZSBmYWlyZSwgdW4gbm91dmVhdSBsaWVuIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBwYXIgZS1tYWlsLlwiLFxuICAgIG5lZWRWYWxpZExhc3RDb25uZWN0aW9uRGF0ZSA6IFwiTGEgZGF0ZSBkZSBkZXJuacOocmUgY29ubmV4aW9uIG4nZXN0IHBhcyB2YWxpZGUuXCIsXG4gICAgcGFzc3dvcmRDb3BpZWQ6IFwiTGUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBhIMOpdMOpIGNvcGnDqSBkYW5zIGxlIHByZXNzZS1wYXBpZXIgZGUgdm90cmUgb3JkaW5hdGV1ciAob3UgbW9iaWxlKS4gVm91cyBwb3V2ZXogbGUgXFxcImNvbGxlclxcXCIgb8O5IHZvdXMgbGUgc291aGFpdGV6LlwiLFxuICAgIHNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdDogXCJMJ3V0aWxpc2F0ZXVyIG4nYSBwYXMgw6l0w6kgdHJvdXbDqS5cIixcbiAgICB0b29NYW55TG9naW5GYWlscyA6IFwiRMOpc29sw6kgbWFpcyBpbCB5IGEgZXUgdHJvcCBkZSB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbiBpbmZydWN0dWV1c2VzIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuIFZvdXMgZGV2ZXogYXR0ZW5kcmUgTUlOVVRFUyBtaW51dGVzIHBvdXIgZXNzYXllciBkZSBub3V2ZWF1LlwiLFxuICAgIHVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCA6IFwiTCdpZGVudGlmaWFudCBmb3VybmkgcG91ciBsZSBwYXJyYWluIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gdXRpbGlzYXRldXIuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgbidhIHBhcyB1biBmb3JtYXQgY29ycmVjdC5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIgOiBcIk1haXMgbGUgbm91dmVhdSBjb2RlIHBhcnJhaW4gbidhIHB1IMOqdHJlIHJldGVudSwgY2FyIGlsIG5lIGNvcnJlc3BvbmQgw6AgYXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG91IMOgIGwndXRpbGlzYXRldXIgbHVpLW3Dqm1lLlwiLFxuICAgIHVwZGF0ZWROZWVkVW5pcXVlRW1haWwgOiBcIk1haXMgbGEgbm91dmVsbGUgYWRyZXNzZSBlLW1haWwgc2Fpc2llIChORVdfRU1BSUwpIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gYXV0cmUgY29tcHRlLlwiLFxuICAgIHVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlcjogXCJMJ3V0aWxpc2F0ZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBuJ2V4aXN0ZSBwYXMvcGx1cyBvdSBuJ2EgcGFzIGVuY29yZSB2YWxpZMOpIHNvbiBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE9rTWVzc2FnZTogXCJWb3MgaW5mb3JtYXRpb25zIG9udCBiaWVuIMOpdMOpIG1pc2VzIMOgIGpvdXIuXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIHZvdHJlIGNvbXB0ZS4gVm91cyBwb3V2ZXogdm91cyB5IGNvbm5lY3RlciA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluOiBcIkNlIGNvbXB0ZSBhIGTDqWrDoCDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBcIlZvdHJlIGNvbXB0ZSB2aWVudCBiaWVuIGQnw6p0cmUgdmFsaWTDqS4gTWVyY2kgZXQgYmllbnZlbnVlICE8YnI+Vm91cyBwb3V2ZXogY29tcGzDqXRlciBsZXMgaW5mb3JtYXRpb25zIGRlIHZvdHJlIGFib25uZW1lbnQgY2ktZGVzc291cy5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUFkbWluOiBcIkxlIGNvbXB0ZSBhIGJpZW4gw6l0w6kgdmFsaWTDqS5cIixcbiAgICB3ZWxjb21lTWVzc2FnZTogXCJCaWVudmVudWUgI05BTUUgIVwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyAtLSBQQUdFIFBFUk1FVFRBTlQgREUgVkFMSURFUiBVTiBDSEFOR0VNRU5UIEQnRU1BSUwgT1UgREUgTU9UIERFIFBBU1NFXG5cbi8vLyBVbiB0b2tlbiBlc3QgdHJhbnNtaXMgZW4gcGFyYW3DqHRyZSBkZSBsJ1VybC4gSWwgYSB1bmUgdmFsaWRpdMOpIGxpbWl0w6kgZGFucyBsZSB0ZW1wcy5cbi8vLyBTaSBsZSB0b2tlbiBlc3Qgb2ssIG9uIHZhbGlkZSBsYSBtaXNlIMOgIGpvdXIgZXQgcmVkaXJpZ2UgbCd1dGlsaXNhdGV1ciB2ZXJzIHNhIHBhZ2UgZCdhY2N1ZWlsXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBjw7R0w6kgY2xpZW50IDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmNvbnN0IHsgYWNjb3VudFBhZ2UsIHVzZXJIb21lUGFnZSB9ID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuY29uc3QgeyBjaGVja05ld0xvZ2luTGlua1JvdXRlLCB1c2VyUm91dGVzIH0gPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpO1xuXG4vLyBJbXBvcnRhdGlvbiBkZXMgZm9uY3Rpb25zIHV0aWxlIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXRVcmxQYXJhbXMgfSBmcm9tIFwiLi90b29scy91cmwuanNcIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiwgc2V0U2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuY29uc3QgZGl2UmVzcG9uc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlXCIpO1xuXG5oZWxsb0RldigpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICBpZihkYXRhcyAmJiBkYXRhcy50IT09dW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTmV3TG9naW5MaW5rUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSwgY29sb3I6XCJzdWNjZXNzXCIgfSk7Ly8gcG91ciBsJ2FmZmljaGVyIHN1ciBsYSBwYWdlIHN1aXZhbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UubWVzc2FnZSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7Ly8gYXUgY2FzIG/DucKgYmxvY2FnZSByZWRpcmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIit1c2VySG9tZVBhZ2UpOy8vIHF1ZSB1c2VyIHBvc3NpYmxlIGljaVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSA0MDQgJiYgcmVzcG9uc2UuZXJyb3JzICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBhY2NvdW50UGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrZGF0YXMudCk7XG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIHLDqWN1cMOpcmFudCBsZXMgcGFyYW3DqHRyZXMgcGFzc8OpcyBwYXIgbCd1cmxcbmV4cG9ydCBjb25zdCBnZXRVcmxQYXJhbXMgPSAoKSA9Plxue1xuICAgIGlmKGlzRW1wdHkobG9jYXRpb24uc2VhcmNoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoXCImXCIpO1xuICAgIGlmKCFBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpIHx8IHBhcmFtZXRlcnMubGVuZ3RoPT09MClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBcbiAgICBsZXQgcGFyYW0sIGRhdGFzPXt9O1xuICAgIGZvcihsZXQgaSBpbiBwYXJhbWV0ZXJzKVxuICAgIHtcbiAgICAgICAgcGFyYW0gPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgaWYocGFyYW0ubGVuZ3RoPT09MilcbiAgICAgICAgICAgIGRhdGFzW3BhcmFtWzBdXT1kZWNvZGVVUkkocGFyYW1bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/paymentPage.app.js b/front/public/JS/paymentPage.app.js index a1a77a7..7682c11 100644 --- a/front/public/JS/paymentPage.app.js +++ b/front/public/JS/paymentPage.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -391,99 +400,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1108,4 +1096,4 @@ const showBtnPayment = choice => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcGF5bWVudFBhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3dlYnBvcnRhZ2UuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImhlbGxvRGV2IiwiaW5pdGlhbGlzZSIsImlzQ29ubmVjdGVkIiwiY2hlY2tTZXNzaW9uIiwidXNlciIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwibG9hZE1hdG9tbyIsIkNHViIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJhYm8xIiwiYWJvMiIsImFibzMiLCJhYm80IiwiZGl2V1BCdG5zIiwic3R5bGUiLCJkaXNwbGF5IiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJ1bkNoZWNrQWxsT3RoZXJzIiwiY2hlY2tlZCIsInNob3dCdG5QYXltZW50IiwiY29uc29sZSIsImVycm9yIiwic2F2ZUxvY2FseSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb24iLCJwYXJzZSIsImdldEl0ZW0iLCJyZW1vdmVMb2NhbHkiLCJyZW1vdmVJdGVtIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiX3BhcSIsIndpbmRvdyIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vdyIsIm5vd1RzIiwicm91bmQiLCJnZXRUaW1lIiwidmlzaXRvckluZm8iLCJnZXRWaXNpdG9ySW5mbyIsImNyZWF0ZVRzIiwicGFyc2VJbnQiLCJjb29raWVUaW1lb3V0Iiwib3JpZ2luYWxUaW1lb3V0Iiwic2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLCJ1IiwiZCIsImciLCJjcmVhdGVFbGVtZW50IiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwidHlwZSIsImFzeW5jIiwic3JjIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJkYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJtZXNzYWdlIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbmxvYWQiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50IiwibG9jYXRpb24iLCJpbmRleE9mIiwiYXNzaWduIiwib25lcnJvciIsInN0YXR1c1RleHQiLCJzZW5kIiwiY2hlY2tCb3hlcyIsImNob2ljZSIsImJ0bnMiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlD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Y0FBVCxDQUF3QixRQUF4QixDQUhiO0FBSUksVUFBU0QsUUFBUSxDQUFDQyxjQUFULENBQXdCLFFBQXhCO0FBSmIsQ0FEQSxDLENBUUE7O0FBQ08sTUFBTVksY0FBYyxHQUFJdUYsTUFBRCxJQUM5QjtBQUNJLE9BQUssSUFBSWpLLEVBQVQsSUFBZWtLLElBQWYsRUFDQTtBQUNJLFFBQUdsSyxFQUFFLEtBQUdpSyxNQUFSLEVBQ0lDLElBQUksQ0FBQ2xLLEVBQUQsQ0FBSixDQUFTb0UsS0FBVCxDQUFlQyxPQUFmLEdBQXVCLE1BQXZCLENBREosS0FHSTZGLElBQUksQ0FBQ2xLLEVBQUQsQ0FBSixDQUFTb0UsS0FBVCxDQUFlQyxPQUFmLEdBQXVCLE9BQXZCO0FBQ1A7QUFDSixDQVRNLEMiLCJmaWxlIjoiLi9KUy9wYXltZW50UGFnZS5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9wYXltZW50UGFnZS5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIEdFU1RJT04gREUgTEEgUEFHRSBEVSBGSU5BTkNFTUVOVCBQQVJUSUNJUEFUSUYgKFNBTlMgREVWT0lSIMOKVFJFIENPTk5FQ1TDiSlcblxuLy8vIFBlcm1ldCBkJ2FmZmljaGVyIGxlcyBib3V0b25zIGRlIHBhaWVtZW50IFdQIHN1aXZhbnQgbGUgY2hvaXggZGUgbCd1dGlsaXNhdGV1ci5cbi8vLyBNYXRvbW8gZXN0IMOpZ2FsZW1lbnQgYWN0aXbDqSBzaSBsJ2ludGVybmF1dGUgbidlc3QgcGFzIGNvbm5lY3TDqS5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGF2YWlsYWJsZUxhbmdzLCB0aGVtZSB9IGZyb20gXCIuLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG4vLyBGb25jdGlvbnMgdXRpbGVzIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBsb2FkTWF0b21vIH0gZnJvbSBcIi4vdG9vbHMvbWF0b21vLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuaW1wb3J0IHsgc2hvd0J0blBheW1lbnQsIHVuQ2hlY2tBbGxPdGhlcnMgfSBmcm9tIFwiLi90b29scy93ZWJwb3J0YWdlLmpzXCI7XG5cbmhlbGxvRGV2KCk7XG5cbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICAvLyBvbiBjaGFuZ2UgbGUgbGllbiBkdSBjb21wdGUgZW4gaGF1dCA6XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcblxuICAgICAgICAvLyBMZXMgYm91dG9ucyBkZSBwYWllbWVudCBXUCA6ICAgICAgICBcbiAgICAgICAgY29uc3QgQ0dWPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiQ0dWT2tcIik7XG4gICAgICAgIGNvbnN0IGFibzE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm8xXCIpO1xuICAgICAgICBjb25zdCBhYm8yPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvMlwiKTtcbiAgICAgICAgY29uc3QgYWJvMz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzNcIik7XG4gICAgICAgIGNvbnN0IGFibzQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm80XCIpO1xuICAgICAgICBjb25zdCBkaXZXUEJ0bnM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bnNcIik7XG4gICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICBhYm8xLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdW5DaGVja0FsbE90aGVycyhcImFibzFcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBhYm8yLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdW5DaGVja0FsbE90aGVycyhcImFibzJcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBhYm8zLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdW5DaGVja0FsbE90aGVycyhcImFibzNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBhYm80LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdW5DaGVja0FsbE90aGVycyhcImFibzRcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBDR1YuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZihDR1YuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgICAgIGlmKGFibzEuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuMVwiKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGFibzIuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuMlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGFibzMuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuM1wiKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGFibzQuY2hlY2tlZD09PXRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNob3dCdG5QYXltZW50KFwiYnRuNFwiKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgQ0dWLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBtYXRvbW8gfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL21hdG9tby5qc1wiO1xuXG4vLyBGb25jdGlvbiBjaGFyZ2VhbnQgbGUgY29kZSBtYXRvbW9cbmV4cG9ydCBjb25zdCBsb2FkTWF0b21vID0gKCkgPT5cbntcbiAgICAvLyBjaGFyZ2VtZW50IGRlIG1hdG9tb1xuICAgIHZhciBfcGFxID0gd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICAvL2Fqb3V0IGNuaWwgIDpcbiAgICBfcGFxLnB1c2goW2Z1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbm93VHMgPSBNYXRoLnJvdW5kKG5vdy5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgICAgICAgIHZpc2l0b3JJbmZvID0gc2VsZi5nZXRWaXNpdG9ySW5mbygpO1xuICAgICAgICAgICAgdmFyIGNyZWF0ZVRzID0gcGFyc2VJbnQodmlzaXRvckluZm9bMl0pO1xuICAgICAgICAgICAgdmFyIGNvb2tpZVRpbWVvdXQgPSAzMzY5NjAwMDsgLy8gMTMgbW9pcyBlbiBzZWNvbmRlc1xuICAgICAgICAgICAgdmFyIG9yaWdpbmFsVGltZW91dCA9IGNyZWF0ZVRzICsgY29va2llVGltZW91dCAtIG5vd1RzO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZpc2l0b3JDb29raWVUaW1lb3V0KCBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KCkgKTtcbiAgICB9XSk7XG4gICAgLy8tLWZpbiBham91dCBjbmlsXG4gICAgX3BhcS5wdXNoKFsndHJhY2tQYWdlVmlldyddKTtcbiAgICBfcGFxLnB1c2goWydlbmFibGVMaW5rVHJhY2tpbmcnXSk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdT1tYXRvbW8udXJsO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRUcmFja2VyVXJsJywgdSsnbWF0b21vLnBocCddKTtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0U2l0ZUlkJywgbWF0b21vLnNpdGVJZF0pO1xuICAgICAgICB2YXIgZD1kb2N1bWVudCwgZz1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLCBzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgICBnLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7IGcuYXN5bmM9dHJ1ZTsgZy5zcmM9dSsnbWF0b21vLmpzJzsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuICAgIH0pKCk7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59IiwiY29uc3QgY2hlY2tCb3hlcz1cbntcbiAgICBcIkNHVlwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJDR1ZPa1wiKSxcbiAgICBcImFibzFcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvMVwiKSxcbiAgICBcImFibzJcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvMlwiKSxcbiAgICBcImFibzNcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvM1wiKSxcbiAgICBcImFibzRcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvNFwiKVxufVxuY29uc3QgZGl2V1BCdG5zPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG5zXCIpO1xuXG4vLyBMb3JzcXVlIGwnb24gc8OpbGVjdGlvbm5lIHVuIG1vbnRhbnQsIGxlcyBhdXRyZXMgb3B0aW9ucyArIGxlcyBDR1Ygc29udCBkw6lzw6lsZWN0aW9ubsOpc1xuZXhwb3J0IGNvbnN0IHVuQ2hlY2tBbGxPdGhlcnMgPSAoY2hvaWNlKSA9Plxue1xuICAgIGZvciAobGV0IGlkIGluIGNoZWNrQm94ZXMpXG4gICAge1xuICAgICAgICBpZihpZCE9PWNob2ljZSlcbiAgICAgICAgICAgIGNoZWNrQm94ZXNbaWRdLmNoZWNrZWQ9ZmFsc2U7XG4gICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgIH1cbn1cblxuXG5jb25zdCBidG5zPVxue1xuICAgIFwiYnRuMVwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bjFcIiksXG4gICAgXCJidG4yXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuMlwiKSxcbiAgICBcImJ0bjNcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG4zXCIpLFxuICAgIFwiYnRuNFwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bjRcIilcbn1cblxuLy8gQWZmaWNoZSBsZSBib24gYm91dG9uIGRlIHBhaWVtZW50IGV0IGNhY2hlIGxlcyBhdXRyZXNcbmV4cG9ydCBjb25zdCBzaG93QnRuUGF5bWVudCA9IChjaG9pY2UpID0+XG57XG4gICAgZm9yIChsZXQgaWQgaW4gYnRucylcbiAgICB7XG4gICAgICAgIGlmKGlkIT09Y2hvaWNlKVxuICAgICAgICAgICAgYnRuc1tpZF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnRuc1tpZF0uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgfVxufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcGF5bWVudFBhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3dlYnBvcnRhZ2UuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsImNvbmZpZ1RlbXBsYXRlIiwiaGVsbG9EZXYiLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJsb2FkTWF0b21vIiwiQ0dWIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImFibzEiLCJhYm8yIiwiYWJvMyIsImFibzQiLCJkaXZXUEJ0bnMiLCJzdHlsZSIsImRpc3BsYXkiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInVuQ2hlY2tBbGxPdGhlcnMiLCJjaGVja2VkIiwic2hvd0J0blBheW1lbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJKU09OIiwic3RyaW5naWZ5IiwianNvbiIsInBhcnNlIiwiZ2V0SXRlbSIsInJlbW92ZUxvY2FseSIsInJlbW92ZUl0ZW0iLCJsb2ciLCJsaW5rIiwiaG9tZVBhZ2UiLCJfcGFxIiwid2luZG93IiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJwYXJzZUludCIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsImNyZWF0ZUVsZW1lbnQiLCJzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJ0eXBlIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJ0b2tlbiIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsIm1lc3NhZ2UiLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ubG9hZCIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0IiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCIsInNlbmQiLCJjaGVja0JveGVzIiwiY2hvaWNlIiwiYnRucyJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7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QztBQUNJLE9BQUssSUFBSWpLLEVBQVQsSUFBZWdLLFVBQWYsRUFDQTtBQUNJLFFBQUdoSyxFQUFFLEtBQUdpSyxNQUFSLEVBQ0lELFVBQVUsQ0FBQ2hLLEVBQUQsQ0FBVixDQUFleUUsT0FBZixHQUF1QixLQUF2QjtBQUNKTixhQUFTLENBQUNDLEtBQVYsQ0FBZ0JDLE9BQWhCLEdBQXdCLE1BQXhCO0FBQ0g7QUFDSixDQVJNO0FBV1AsTUFBTTZGLElBQUksR0FDVjtBQUNJLFVBQVNyRyxRQUFRLENBQUNDLGNBQVQsQ0FBd0IsUUFBeEIsQ0FEYjtBQUVJLFVBQVNELFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QixRQUF4QixDQUZiO0FBR0ksVUFBU0QsUUFBUSxDQUFDQyxjQUFULENBQXdCLFFBQXhCLENBSGI7QUFJSSxVQUFTRCxRQUFRLENBQUNDLGNBQVQsQ0FBd0IsUUFBeEI7QUFKYixDQURBLEMsQ0FRQTs7QUFDTyxNQUFNWSxjQUFjLEdBQUl1RixNQUFELElBQzlCO0FBQ0ksT0FBSyxJQUFJakssRUFBVCxJQUFla0ssSUFBZixFQUNBO0FBQ0ksUUFBR2xLLEVBQUUsS0FBR2lLLE1BQVIsRUFDSUMsSUFBSSxDQUFDbEssRUFBRCxDQUFKLENBQVNvRSxLQUFULENBQWVDLE9BQWYsR0FBdUIsTUFBdkIsQ0FESixLQUdJNkYsSUFBSSxDQUFDbEssRUFBRCxDQUFKLENBQVNvRSxLQUFULENBQWVDLE9BQWYsR0FBdUIsT0FBdkI7QUFDUDtBQUNKLENBVE0sQyIsImZpbGUiOiIuL0pTL3BheW1lbnRQYWdlLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL3BheW1lbnRQYWdlLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBERSBMQSBQQUdFIERVIEZJTkFOQ0VNRU5UIFBBUlRJQ0lQQVRJRiAoU0FOUyBERVZPSVIgw4pUUkUgQ09OTkVDVMOJKVxuXG4vLy8gUGVybWV0IGQnYWZmaWNoZXIgbGVzIGJvdXRvbnMgZGUgcGFpZW1lbnQgV1Agc3VpdmFudCBsZSBjaG9peCBkZSBsJ3V0aWxpc2F0ZXVyLlxuLy8vIE1hdG9tbyBlc3Qgw6lnYWxlbWVudCBhY3RpdsOpIHNpIGwnaW50ZXJuYXV0ZSBuJ2VzdCBwYXMgY29ubmVjdMOpLlxuXG4vLyBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gdGlyw6lzIGR1IGJhY2tlbmQgOlxuaW1wb3J0IHsgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbi8vIEZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2LCB1cGRhdGVBY2NvdW50TGluayB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGNoZWNrU2Vzc2lvbiB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5pbXBvcnQgeyBzaG93QnRuUGF5bWVudCwgdW5DaGVja0FsbE90aGVycyB9IGZyb20gXCIuL3Rvb2xzL3dlYnBvcnRhZ2UuanNcIjtcblxuaGVsbG9EZXYoKTtcblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIG9uIGNoYW5nZSBsZSBsaWVuIGR1IGNvbXB0ZSBlbiBoYXV0IDpcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIHVwZGF0ZUFjY291bnRMaW5rKHVzZXIuc3RhdHVzLCBjb25maWdUZW1wbGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuXG4gICAgICAgIC8vIExlcyBib3V0b25zIGRlIHBhaWVtZW50IFdQIDogICAgICAgIFxuICAgICAgICBjb25zdCBDR1Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJDR1ZPa1wiKTtcbiAgICAgICAgY29uc3QgYWJvMT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzFcIik7XG4gICAgICAgIGNvbnN0IGFibzI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm8yXCIpO1xuICAgICAgICBjb25zdCBhYm8zPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWJvM1wiKTtcbiAgICAgICAgY29uc3QgYWJvND1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFibzRcIik7XG4gICAgICAgIGNvbnN0IGRpdldQQnRucz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuc1wiKTtcbiAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgIGFibzEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvMVwiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFibzIuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvMlwiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFibzMuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvM1wiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFibzQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICB1bkNoZWNrQWxsT3RoZXJzKFwiYWJvNFwiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIENHVi5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKENHVi5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXZXUEJ0bnMuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgaWYoYWJvMS5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG4xXCIpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYoYWJvMi5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG4yXCIpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYoYWJvMy5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG4zXCIpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYoYWJvNC5jaGVja2VkPT09dHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2hvd0J0blBheW1lbnQoXCJidG40XCIpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRpdldQQnRucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICBDR1YuY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IG1hdG9tbyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvbWF0b21vLmpzXCI7XG5cbi8vIEZvbmN0aW9uIGNoYXJnZWFudCBsZSBjb2RlIG1hdG9tb1xuZXhwb3J0IGNvbnN0IGxvYWRNYXRvbW8gPSAoKSA9Plxue1xuICAgIC8vIGNoYXJnZW1lbnQgZGUgbWF0b21vXG4gICAgdmFyIF9wYXEgPSB3aW5kb3cuX3BhcSA9IHdpbmRvdy5fcGFxIHx8IFtdO1xuICAgIC8vYWpvdXQgY25pbCAgOlxuICAgIF9wYXEucHVzaChbZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICBmdW5jdGlvbiBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KClcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBub3dUcyA9IE1hdGgucm91bmQobm93LmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgICAgICAgdmlzaXRvckluZm8gPSBzZWxmLmdldFZpc2l0b3JJbmZvKCk7XG4gICAgICAgICAgICB2YXIgY3JlYXRlVHMgPSBwYXJzZUludCh2aXNpdG9ySW5mb1syXSk7XG4gICAgICAgICAgICB2YXIgY29va2llVGltZW91dCA9IDMzNjk2MDAwOyAvLyAxMyBtb2lzIGVuIHNlY29uZGVzXG4gICAgICAgICAgICB2YXIgb3JpZ2luYWxUaW1lb3V0ID0gY3JlYXRlVHMgKyBjb29raWVUaW1lb3V0IC0gbm93VHM7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxUaW1lb3V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmlzaXRvckNvb2tpZVRpbWVvdXQoIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKSApO1xuICAgIH1dKTtcbiAgICAvLy0tZmluIGFqb3V0IGNuaWxcbiAgICBfcGFxLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pO1xuICAgIF9wYXEucHVzaChbJ2VuYWJsZUxpbmtUcmFja2luZyddKTtcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB1PW1hdG9tby51cmw7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFRyYWNrZXJVcmwnLCB1KydtYXRvbW8ucGhwJ10pO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRTaXRlSWQnLCBtYXRvbW8uc2l0ZUlkXSk7XG4gICAgICAgIHZhciBkPWRvY3VtZW50LCBnPWQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgICAgIGcudHlwZT0ndGV4dC9qYXZhc2NyaXB0JzsgZy5hc3luYz10cnVlOyBnLnNyYz11KydtYXRvbW8uanMnOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcscyk7XG4gICAgfSkoKTtcbn0iLCJpbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCBzaXRlVXJsLCB0aGVtZSB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5cbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyAgY2hlY2tMb2dpblJvdXRlLCB0aW1lRGlmZmVyZW5jZU1heCwgdGltZURpZmZlcmVuY2VNaW4sIHVzZXJSb3V0ZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL3VzZXJzLmpzXCI7XG5cbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRUaW1lRGlmZmVyZW5jZSA9ICgpID0+XG57XG4gICAgLy8gbXVsdGlwbGllciBwYXIgLTEsIGNhciBjJ2VzdCBjZSBxdSdpbCBmYXV0IFwiYWpvdXRlclwiIMOgIGwnaGV1cmUgVVRDIHBvdXIgcmV2ZW5pciBlbiBoZXVyZSBsb2NhbGUgcXVpIG0naW50w6lyZXNzZSBldCBub24gbCdpbnZlcnNlXG4gICAgY29uc3QgdGltZUxvY2FsPW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSotMTtcbiAgICBpZih0aW1lTG9jYWwgPiB0aW1lRGlmZmVyZW5jZU1heCB8fCB0aW1lTG9jYWwgPCB0aW1lRGlmZmVyZW5jZU1pbilcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gdGltZUxvY2FsO1xufVxuXG4vLyBKJ3V0aWxpc2UgbGUgc3RvY2thZ2UgbG9jYWwgZHUgbmF2aWdhdGV1ciBwb3VyIGVucmVnaXN0cmVyIGxlcyBkb25uw6llcyBwZXJtZXR0YW50IGRlIHJlY29ubmHDrnRyZSBsJ3V0aWxpc2F0ZXVyIHBhciBsYSBzdWl0ZVxuLy8gU2V1bCBsZSBzZXJ2ZXVyIHBvdXJyYSB2w6lyaWZpZXIgcXVlIGxlcyBpZGVudGlmaWFudHMgc29udCAodG91am91cnMpIHZhbGlkZXMuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9ICh1c2VySWQsIHRva2VuLCBkdXJhdGlvblRTKSA9Plxue1xuICAgIGNvbnN0IHN0b3JhZ2VVc2VyPVxuICAgIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdG9rZW46IHRva2VuLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25UU1xuICAgIH1cbiAgICBzYXZlTG9jYWx5KFwidXNlclwiLCBzdG9yYWdlVXNlcik7XG59XG5cbi8vIFbDqXJpZmllIHF1J2lsIHkgYSBkZXMgZG9ubsOpZXMgbG9jYWxlcyBjb25jZXJuYW50IGxlIHLDqXN1bHRhdCBkJ3VuIHF1aXogb3UgZCd1biBncm91cGUgZGUgcXVpenNcbi8vIEV0IGxlcyBham91dGUgYXV4IGRvbm7DqWVzIGVudm95w6llcyBwYXIgbGVzIGZvcm11bGFpcmVzIGQnaW5zY3JpcHRpb24vY29ubmV4aW9uIHNpIGMnZXN0IGxlIGNhc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyRGF0YXMgPSAoZGF0YXMpID0+XG57XG4gICAgY29uc3QgbGFzdEFuc3dlcj1nZXRMb2NhbHkoXCJsYXN0QW5zd2VyXCIpO1xuICAgIGlmKCFpc0VtcHR5KGxhc3RBbnN3ZXIpKVxuICAgIHtcbiAgICAgICAgY29uc3QgYW5zd2VyPUpTT04ucGFyc2UobGFzdEFuc3dlcik7XG4gICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLmR1cmF0aW9uPWFuc3dlci5kdXJhdGlvbjtcbiAgICAgICAgICAgIGRhdGFzLm5iQ29ycmVjdEFuc3dlcnM9YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICBkYXRhcy5uYlF1ZXN0aW9ucz1hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSlcbiAgICAgICAgICAgICAgICBkYXRhcy5RdWVzdGlvbm5haXJlSWQ9YW5zd2VyLlF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhcy5Hcm91cElkPWFuc3dlci5Hcm91cElkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gQ2V0dGUgZm9uY3Rpb24gdGVzdGUgbGEgY29ubmV4aW9uIGRlIGwndXRpbGlzYXRldXIgZCd1bmUgcGFnZVxuLy8gT24gcGV1dCBmb3VybmlzIHVuZSBsaXN0ZSBkZSBzdGF0dXRzIGFjY2VwdMOpcyAoc2kgdmlkZSA9IHRvdXMpLCBhaW5zaSBxdSd1bmUgdXJsIGRlIHJlZGlyZWN0aW9uIHNpIG5vbiBjb25uZWN0w6ksIHVuIG1lc3NhZ2UgZCdlcnJldXIgw6AgYWZmaWNoZXIgc3VyIGxhIHBhZ2UgZGUgZGVzdGluYXRpb24gZXQgbCd1cmwgc3VyIGxhcXVlbGxlIHJldmVuaXIgdW5lIGZvaXMgY29ubmVjdMOpXG5leHBvcnQgY29uc3QgY2hlY2tTZXNzaW9uID0gYXN5bmMgKHN0YXR1cz1bXSwgdXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhcz1nZXRMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICBpZihpc0VtcHR5KHVzZXJEYXRhcykpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdXNlcj1KU09OLnBhcnNlKHVzZXJEYXRhcyk7XG4gICAgICAgICAgICBpZihpc0VtcHR5KHVzZXIuaWQpIHx8wqBpc0VtcHR5KHVzZXIudG9rZW4pIHx8IGlzRW1wdHkodXNlci5kdXJhdGlvbikgfHwgdXNlci5kdXJhdGlvbiA8IERhdGUubm93KCkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrY2hlY2tMb2dpblJvdXRlK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UuaXNWYWxpZCAmJiByZXNwb25zZS5pZCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmlkPT09dXNlci5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm5hbWU9cmVzcG9uc2UubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLmxhbmd1YWdlPXJlc3BvbnNlLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIudGltZURpZmZlcmVuY2U9cmVzcG9uc2UudGltZURpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5zdGF0dXM9cmVzcG9uc2Uuc3RhdHVzOy8vIGMnZXN0IGxlIHRva2VuIHF1aSBzZXJ0IMOgIHbDqXJpZmllciBsZSBzdGF0dXQgw6AgY2hhcXVlIHJlcXXDqnRlIMOgIGwnQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUxvY2FseShcInVzZXJcIiwgdXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2kgaWwgcydhZ2l0IGQndW4gXCJ1c2VyXCIgZXQgcXVlIHNvbiBhYm9ubmVtZW50IGEgZXhwaXLDqSwgamUgbGUgcmVkaXJpZ2UgdmVycyBsYSBjYWlzc2UgOi0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzPT09XCJ1c2VyXCIgJiYgcmVzcG9uc2UubmJEYXlzT2sgPD0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybEFjY291bnQ9c2l0ZVVybCtcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZih1cmxBY2NvdW50KT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIi9cIitjb25maWdUZW1wbGF0ZS5hY2NvdW50UGFnZStcIiNzdWJzY3JpYmVcIik7Ly8gcGFzc8OpZSBkaXJlY3RlbWVudCBpY2ksIGwnYW5jcmUgI3N1YnNjcmliZSBuZSBmb25jdGlvbm5lIHBhcyAhP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0dXMubGVuZ3RoIT09MCAmJiBzdGF0dXMuaW5kZXhPZihyZXNwb25zZS5zdGF0dXMpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHhoci5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyBDZXR0ZSBmb25jdGlvbiBzZXJ0IMOgIGxhIHByw6ljw6lkZW50ZSBlbiBjYXMgZGUgY29ubmV4aW9uIG5vbiB2YWxpZGVcbmNvbnN0IHJlZGlyZWN0VXNlciA9ICh1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKVxuICAgICAgICBzYXZlTG9jYWx5KFwibWVzc2FnZVwiLCBtZXNzYWdlKTtcbiAgICBpZighaXNFbXB0eSh1cmxXYW50ZWQpKVxuICAgICAgICBzYXZlTG9jYWx5KFwidXJsXCIsIHVybFdhbnRlZCk7XG4gICAgaWYoIWlzRW1wdHkodXJsUmVkaXJlY3Rpb24pKVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHVybFJlZGlyZWN0aW9uKTtcbn0iLCJjb25zdCBjaGVja0JveGVzPVxue1xuICAgIFwiQ0dWXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkNHVk9rXCIpLFxuICAgIFwiYWJvMVwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm8xXCIpLFxuICAgIFwiYWJvMlwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm8yXCIpLFxuICAgIFwiYWJvM1wiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm8zXCIpLFxuICAgIFwiYWJvNFwiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYm80XCIpXG59XG5jb25zdCBkaXZXUEJ0bnM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bnNcIik7XG5cbi8vIExvcnNxdWUgbCdvbiBzw6lsZWN0aW9ubmUgdW4gbW9udGFudCwgbGVzIGF1dHJlcyBvcHRpb25zICsgbGVzIENHViBzb250IGTDqXPDqWxlY3Rpb25uw6lzXG5leHBvcnQgY29uc3QgdW5DaGVja0FsbE90aGVycyA9IChjaG9pY2UpID0+XG57XG4gICAgZm9yIChsZXQgaWQgaW4gY2hlY2tCb3hlcylcbiAgICB7XG4gICAgICAgIGlmKGlkIT09Y2hvaWNlKVxuICAgICAgICAgICAgY2hlY2tCb3hlc1tpZF0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZGl2V1BCdG5zLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgfVxufVxuXG5cbmNvbnN0IGJ0bnM9XG57XG4gICAgXCJidG4xXCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuMVwiKSxcbiAgICBcImJ0bjJcIiA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV1BCdG4yXCIpLFxuICAgIFwiYnRuM1wiIDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXUEJ0bjNcIiksXG4gICAgXCJidG40XCIgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIldQQnRuNFwiKVxufVxuXG4vLyBBZmZpY2hlIGxlIGJvbiBib3V0b24gZGUgcGFpZW1lbnQgZXQgY2FjaGUgbGVzIGF1dHJlc1xuZXhwb3J0IGNvbnN0IHNob3dCdG5QYXltZW50ID0gKGNob2ljZSkgPT5cbntcbiAgICBmb3IgKGxldCBpZCBpbiBidG5zKVxuICAgIHtcbiAgICAgICAgaWYoaWQhPT1jaG9pY2UpXG4gICAgICAgICAgICBidG5zW2lkXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidG5zW2lkXS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICB9XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/questionnaire.app.js b/front/public/JS/questionnaire.app.js index 940fdb0..0160e28 100644 --- a/front/public/JS/questionnaire.app.js +++ b/front/public/JS/questionnaire.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -534,99 +543,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1573,4 +1561,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3F1ZXN0aW9ubmFpcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Fuc3dlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJjaGVja1Jlc3BvbnNlc091cHV0RmFpbCIsImNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0iLCJjaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcyIsIm5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSIsIm5lZWRJbnRlZ2VyTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1pbk51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWROdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIiwibm9QcmV2aW91c0Fuc3dlciIsInByZXZpb3VzQW5zd2Vyc0xpbmUiLCJwcmV2aW91c0Fuc3dlcnNTdGF0cyIsInByZXZpb3VzQW5zd2Vyc1RpdGxlIiwicmVzcG9uc2VTYXZlZEVycm9yIiwicmVzcG9uc2VTYXZlZE1lc3NhZ2UiLCJzdGF0c1VzZXIiLCJ3YW50VG9TYXZlUmVzcG9uc2VzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJUb29sIiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwibXlTdHJpbmciLCJpc0VtcHR5IiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJ1c2Vyc0dldENvbmZpZ1VybCIsImNvbmZpZ1RlbXBsYXRlIiwibXlGb3JtIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdlJlc3BvbnNlIiwiYnRuU2hvdyIsImJ0blN1Ym1pdCIsImV4cGxhbmF0aW9uc1RpdGxlIiwiZXhwbGFuYXRpb25zQ29udGVudCIsImlzQ29ubmVjdGVkIiwidXNlciIsImluaXRpYWxpc2UiLCJzdHlsZSIsImRpc3BsYXkiLCJjaGVja1Nlc3Npb24iLCJnZXRMb2NhbHkiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImNoZWNrUHJldmlvdXNSZXNwb25zZXMiLCJsb2FkTWF0b21vIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2Iiwic2hvd1F1ZXN0aW9ubmFpcmUiLCJjaHJvbm9CZWdpbiIsIm5vdyIsImhlcmUiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJhc3NpZ24iLCJhZGRFdmVudExpc3RlbmVyIiwicHJldmVudERlZmF1bHQiLCJhZGRFbGVtZW50IiwiYW5zd2VyIiwiaW5uZXJIVE1MIiwidXNlclJlc3BvbnNlcyIsImdldERhdGFzRnJvbUlucHV0cyIsImR1cmF0aW9uIiwicm91bmQiLCJuYlF1ZXN0aW9ucyIsIm5iQ29ycmVjdEFuc3dlcnMiLCJRdWVzdGlvbm5haXJlSWQiLCJpZENob2ljZSIsImlkUXVlc3Rpb24iLCJnb29kUmVzcG9uc2UiLCJpdGVtIiwic3RhcnRzV2l0aCIsImxhc3RJbmRleE9mIiwicGFyZW50Tm9kZSIsImNsYXNzTGlzdCIsImFkZCIsImdldE91cHV0IiwiY2hlY2tBbnN3ZXJPdXB1dCIsInhoclNhdmVBbnN3ZXIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInhoclJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwibWVzc2FnZSIsInNldFJlcXVlc3RIZWFkZXIiLCJ0b2tlbiIsInRpbWVEaWZmZXJlbmNlIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJzZW5kIiwic3RyaW5naWZ5Iiwic2F2ZUFuc3dlciIsInF1ZXJ5U2VsZWN0b3IiLCJleHBsYW5hdGlvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwieGhyUHJldmlvdXNSZXMiLCJyZXNwb25zZSIsIm5iUmVzcG9uc2VzIiwicHJldmlvdXNBbnN3ZXJzQ29udGVudCIsInRvdE5iUXVlc3Rpb25zIiwidG90TmJDb3JyZWN0QW5zd2VycyIsInRvdER1cmF0aW9uIiwibWFwTGluZUNvbnRlbnQiLCJEQVRFQU5TV0VSIiwiZGF0ZUZvcm1hdCIsImNyZWF0ZWRBdCIsIk5CQ09SUkVDVEFOU1dFUlMiLCJOQlFVRVNUSU9OUyIsIkFWR0RVUkFUSU9OIiwicmVwbGFjZUFsbCIsIkFWR0NPUlJFQ1RBTlNXRVJTIiwiY29uZmlnRnJvbnRFbmQiLCJ0eHQiLCJHcm91cElkIiwic2F2ZUxvY2FseSIsInJhdGlvIiwiRFVSQVRJT04iLCJvdXRwdXQiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImRhdGFzIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJpbnNlcnRCZWZvcmUiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRkEsSUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLElBQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQyxxREFBRCxDQUE5Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQO0FBRUlDLFFBQU0sRUFBRSwyQkFGWjtBQUdJQyxTQUFPLEVBQUUsdUJBSGI7QUFJSUMsV0FBUyxFQUFFLFNBSmY7QUFLSUMsWUFBVSxFQUFFLG1CQUxoQjtBQU1JQyxZQUFVLEVBQUUsbUJBTmhCO0FBT0lDLGFBQVcsRUFBRSx1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bGUiOiIuL0pTL3F1ZXN0aW9ubmFpcmUuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvcXVlc3Rpb25uYWlyZS5qc1wiKTtcbiIsImNvbnN0IHVzZXJzID0gcmVxdWlyZShcIi4vdXNlcnNcIik7XG5jb25zdCBxdWVzdGlvbm5haXJlcyA9IHJlcXVpcmUoXCIuL3F1ZXN0aW9ubmFpcmVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgYXBpVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICBzaXRlVXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxuICAgIGFkbWluTmFtZTogXCJGYWJyaWNlXCIsXG4gICAgYWRtaW5FbWFpbDogXCJkZXZAd2lraWxlcm5pLmNvbVwiLFxuICAgIHNlbmRlck5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBzZW5kZXJFbWFpbDogXCJib25qb3VyQHdpa2lsZXJuaS5jb21cIixcbiAgICBhZG1pbkxhbmc6IFwiZnJcIixcbiAgICB0aGVtZTogXCJ3aWtpbGVybmlcIiwgLy8gbGUgdGjDqG1lIHV0aWxpc8OpIChkYW5zIC92aWV3cykgcG91ciBnw6luw6lyZXIgbGVzIHBhZ2VzIEhUTUwuIENvbnRpZW50IHNlcyBwcm9wcmVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24uXG4gICAgYXZhaWxhYmxlTGFuZ3M6IFtcImZyXCJdLC8vIExhbmd1YWdlcyBpbiB3aGljaCB0aGUgc2l0ZSBpcyBhdmFpbGFibGUuIFRoZSBmaXJzdCBvbmUgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIHNpdGVOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgYmVnaW5Db2RlR29kZmF0aGVyOiBcIldMXCIsIC8vIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4ndCBjb250YWluIFwiQFwiICFcbiAgICBkZWZhdWx0UmVjZWlwdERheXM6IFwiMTQ3XCIsIC8vIFBhciBkw6lmYXV0LCBxdWVsKHMpIGpvdXIocykgZGUgbGEgc2VtYWluZSwgbCd1dGlsaXNhdGV1ciByZcOnb2l0LWlsIHF1ZWxxdWUgY2hvc2UgPyAoMT1kaW1hbmNoZSwgMj1sdW5kaS4uLiA3PXNhbWVkaSlcbiAgICBjcm9uVGltaW5nQWxlcnRJblNlY29uZGU6IDEyMCwgLy8gZm9yIGxvZ3NcbiAgICByZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAzLCAvLyBpZGVtXG4gICAgdG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnM6IFwiNDhoXCIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96ZWl0L21zXG4gICAgdG9rZW5Mb2dpbkxpbmtUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnM6IFwiMjRoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzOiBcIjE4MCBkYXlzXCIsXG4gICAgdG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnM6IFwiMWhcIiwvLyBmb3IgZW1haWwgJiBwYXNzd29yZCBjaGFuZ2luZ1xuICAgIHRva2VuRGVsZXRlVXNlclRpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5VbnN1YnNjcmliZUxpbmtUaW1lSW5EYXlzOiBcIjcgZGF5c1wiLCAvLyB0b2tlbiBzZW5kIHdpdGggc3Vic2NyaXB0aW9uJ3MgZW1haWxzXG4gICAgZnJlZUFjY291bnRUaW1pbmdJbkRheXM6IDAsLy8gaWYgMCA9IHVubGltaXRlZFxuICAgIGZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBhY2NvdW50RXhwaXJhdGlvbkZpcnN0Tm90aWZpY2F0aW9uSW5EYXlzOiAxMCxcbiAgICBhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5czogMyxcbiAgICBpbmFjdGl2ZUFjY291bnRUaW1lVG9EZWxldGVJbkRheXM6IDE4MCxcbiAgICAvLyBRdWVzdGlvbm5haXJlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSwgLy8gbWluaW11bSBudW1iZXIgb2YgcXVlc3Rpb25zIGZvciB0aGUgcXVlc3Rpb25uYWlyZSB0byBiZSBwdWJsaXNoYWJsZVxuICAgIG5iUXVlc3Rpb25zTWF4OiAyLCAvLyBpZiAwID0gbm90IG1heGltdW1cbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iTmV3UXVlc3Rpb25uYWlyZXM6IDEyLC8vIGZvciBSU1MsIGV0Yy5cbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbjo3LCAvLyBpbiB1c2VyIGxvY2FsIHRpbWVcbiAgICBob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQ6MjEsIC8vIGlkZW1cbiAgICBtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZTogNTAsIC8vIGZvciBzdWJzY3JpcHRpb24ncyBlLW1haWxpbmdcbiAgICBtaW5TZWFyY2hRdWVzdGlvbm5haXJlczogMyxcbiAgICBmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIDogXCJwdWJsaXNoaW5nQXRcIiwgLy8gZmllbGQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgcXVlc3Rpb25uYWlyZXMsIGNhbiBiZSBcImNyZWF0ZWRBdFwiLCBcInVwZGF0ZWRBdFwiIG9yIFwicHVibGlzaGluZ0F0XCJcbiAgICAvLyBHcm91cHMgOlxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluOiAxLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWF4OiAwLFxuICAgIC8vIElsbHVzdHJhdGlvbnM6XG4gICAgbmJJbGx1c3RyYXRpb25zTWluOiAxLFxuICAgIG5iSWxsdXN0cmF0aW9uc01heDogMSxcbiAgICBtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldDogMTAwMDAwMCwvLyBwYXMgY29udHLDtGzDqSBwb3VyIGwnaW5zdGFudC4gw4AgcmV2b2lyLlxuICAgIG1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbjogWyBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9wbmdcIiBdLFxuICAgIC8vIC0tIFVwbG9hZCBhbmQgcmVzaXplOlxuICAgIGlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHg6IDUwMCxcbiAgICBpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeDogMjAwLFxuICAgIC8vIExpbmtzOlxuICAgIG5iTGlua3NNaW46IDEsXG4gICAgbmJMaW5rc01heDogMCxcbiAgICAvLyBRdWVzdGlvbnMgJiByZXNwb25zZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICAvLyDDoCBzdXBwcmltZXIgcXVhbmQgdG91cyBsZXMgXCJyZXF1aXJlXCIgw6Agam91cjpcbiAgICBwYXNzd29yZE1pbkxlbmd0aDogdXNlcnMucGFzc3dvcmQubWlubGVuZ3RoLFxuICAgIGRpckNhY2hlVXNlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnMsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnM6IHVzZXJzLmRpckNhY2hlVXNlcnNBbnN3ZXJzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlUXVlc3Rpb25zLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlySFRNTFF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJXZWJRdWVzdGlvbm5haXJlc1xufTsiLCIvLyBTaSBub24gdXRpbGlzw6ksIHN1cHByaW1lciBsJ2FwcGVsIGRlcyBKUyBmcm9udC1lbmQgcHVpcyByZWNvbXBpbGVyLlxuLy8gUmV2b2lyIGNvbW1lbnQgcsOpb3JnYW5pc2VyIGNlbGEgc291cy1mb3JtZSBkZSBtb2R1bGUgaW5kw6lwZW5kYW50LlxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIFN0YXRzIE1hdG9tbyA6XG4gICAgbWF0b21vOiB7IHVybDogXCJodHRwczovL3N0YXRzLmxlLWZhYi1sYWIuY29tL1wiLCBzaXRlSWQ6IFwiNVwiIH0sXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbnsgICAgXG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1ZXN0aW9ubmFpcmVcIiwvLyBsYSBiYXNlIMOgIGxhcXVlbGxlIHMnYWpvdXRlIGxlcyByb3V0ZXMgc3VpdmFudGVzXG4gICAgZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlczogXCIvZ2V0bGlzdG5leHRxdWVzdGlvbm5haXJlcy9cIixcbiAgICBnZXRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9nZXRcIixcbiAgICBnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvZ2V0cmFuZG9tXCIsIFxuICAgIGdldFN0YXRzUXVlc3Rpb25uYWlyZXMgOiBcIi9zdGF0cy9cIixcbiAgICBwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3F1aXovXCIsXG4gICAgcmVnZW5lcmF0ZUhUTUw6IFwiL2h0bWxyZWdlbmVyYXRlZFwiLFxuICAgIHNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaGFkbWluXCIsXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIGdyb3VwZXMgOlxuICAgIGdyb3VwUm91dGVzOiBcIi9ncm91cFwiLFxuICAgIGdldEdyb3VwUm91dGU6IFwiL2dldC9cIixcbiAgICBwcmV2aWV3R3JvdXBSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBzZWFyY2hHcm91cHNSb3V0ZSA6IFwiL3NlYXJjaFwiLFxuICAgIC8vIC0tIHF1ZXN0aW9ucyAmIGNob2ljZXMgOlxuICAgIHF1ZXN0aW9uc1JvdXRlOiBcIi9xdWVzdGlvbi9cIixcbiAgICAvLyAtLSB0YWdzIDpcbiAgICB0YWdzU2VhcmNoUm91dGU6IFwiL3RhZ3Mvc2VhcmNoL1wiLFxuICAgIC8vIC0tIGFuc3dlcnMgOlxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0UHJldmlvdXNBbnN3ZXJzOiBcIi91c2VyL2Fuc3dlcnMvXCIsXG4gICAgZ2V0U3RhdHNBbnN3ZXJzIDogXCIvdXNlci9hbndzd2Vycy9zdGF0cy9cIiwvLyBmb25jdGlvbm5lIGF1c3NpIHBvdXIgbGVzIGdyb3VwZXNcbiAgICBzYXZlQW5zd2Vyc1JvdXRlOiBcIi9hbnN3ZXIvXCIsLy8gaWRlbVxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIFF1ZXN0aW9ubmFpcmUgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICAgICAgaW50cm9kdWN0aW9uOiB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzIDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgR3JvdXAgOlxuICAgIHtcbiAgICAgICAgdGl0bGU6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNsdWc6IHsgbWF4bGVuZ3RoOiAxNTAgfSwgLy8gY2hhbXAgcmVxdWlzIG1haXMgY2FsY3Vsw6kgw6AgcGFydGlyIGR1IHRpdHJlIHFkIGxhaXNzw6kgdmlkZSBkYW5zIGxlIGZvcm11bGFpcmVcbiAgICB9LFxuICAgIFF1ZXN0aW9uIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJhbms6IHsgcmVxdWlyZWQ6IHRydWUsIG1pbjoxLCBkZWZhdWx0VmFsdWU6MSB9XG4gICAgfSwgICAgICAgICAgXG4gICAgQ2hvaWNlIDpcbiAgICB7XG4gICAgICAgIHRleHQ6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH1cbiAgICB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoR3JvdXBzOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSlNPTiBnw6luw6lyw6lzIDpcbiAgICBkaXJDYWNoZUdyb3VwcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvZ3JvdXBzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ucyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvcXVlc3Rpb25zXCIsXG4gICAgZGlyQ2FjaGVUYWdzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy90YWdzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBIVE1MIGfDqW7DqXLDqXMgOlxuICAgIGRpckhUTUxHcm91cHMgOiBcImZyb250L3B1YmxpYy9xdWl6L2dwXCIsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzIDogXCJmcm9udC9wdWJsaWMvcXVpelwiLFxuICAgIGRpckhUTUxOZXdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICBkaXJIVE1MVGFncyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgLy8gSWRlbSBtYWlzIHBvdXIgdXJscyA6XG4gICAgZGlyV2ViR3JvdXBzIDogXCJxdWl6L2dwXCIsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXMgOiBcInF1aXpcIixcbiAgICBkaXJXZWJOZXdzIDogXCJxdWl6cy9cIixcbiAgICBkaXJXZWJUYWdzIDogXCJxdWl6cy9cIixcbiAgICAvLyBsaW1pdGUgZGVzIHLDqXN1bHRhdCBkdSBtb3RldXIgZGUgcmVjaGVyY2hlLCBxdWFuZCBkZW1hbmRlIGRlIHLDqXN1bHRhdHMgYXUgaGFzYXJkIDpcbiAgICBuYlJhbmRvbVJlc3VsdHMgOiAzLFxuICAgIC8qIFZhbGV1cnMgZW4gZmFpdCBkw6lmaW5pZXMgZGFucyBpbnN0YW5jZS5qcyBkb25jIMOgIHN1cHByaW1lciBxdWFuZCBwbHVzIHV0aWxpc8OpZXMgYWlsbGV1cnMgOiAqL1xuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJUYWdzTWluOiAwLFxuICAgIG5iVGFnc01heDogMCwgLy8gMCA9IG5vdCBtYXggICAgXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgdXNlclJvdXRlczogXCIvdXNlclwiLFxuICAgIGNoZWNrRGVsZXRlTGlua1JvdXRlOiBcIi9jb25maXJtZGVsZXRlL1wiLCAgIFxuICAgIGNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlOiBcIi9pc2VtYWlsZnJlZVwiLFxuICAgIGNoZWNrTG9naW5Sb3V0ZTogXCIvY2hlY2tsb2dpbi9cIixcbiAgICBjaGVja05ld0xvZ2luTGlua1JvdXRlOiBcIi9jb25maXJtbmV3bG9naW4vXCIsXG4gICAgY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlOiBcIi92YWxpZGF0aW9uL1wiLFxuICAgIGNvbm5lY3Rpb25Sb3V0ZTogXCIvbG9naW5cIixcbiAgICBjb25uZWN0aW9uV2l0aExpbmtSb3V0ZTogXCIvY2hlY2tsb2dpbmxpbmtcIixcbiAgICBjcmVhdGVVc2VyUm91dGU6IFwiL2NyZWF0ZVwiLFxuICAgIGdldEFkbWluU3RhdHM6IFwiL2dldGFkbWluc3RhdHMvXCIsXG4gICAgZ2V0R29kQ2hpbGRzOiBcIi9nZXRnb2RjaGlsZHMvXCIsICAgIFxuICAgIGdldEdvZGZhdGhlclJvdXRlOiBcIi9nZXRnb2RmYXRoZXJpZFwiLFxuICAgIGdldExvZ2luTGlua1JvdXRlOiBcIi9nZXRsb2dpbmxpbmtcIixcbiAgICBnZXRQYXltZW50czogXCIvcGF5bWVudC9nZXRmb3JvbmV1c2VyL1wiLFxuICAgIGdldFVzZXJJbmZvczogXCIvZ2V0L1wiLFxuICAgIGdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZTogXCIvZ2V0dXNlcnNxdWVzdGlvbm5haXJlcy9cIiwvLyBsZXMgcXVlc3Rpb25uYWlyZXMgYXV4cXVlbHMgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCBldSBhY2PDqHMgdmlhIHNvbiBhYm9ubmVtZW50ICAgIFxuICAgIHNlYXJjaFVzZXJSb3V0ZTogXCIvc2VhcmNoL1wiLFxuICAgIHNpZ251cENvbXBsZXRpb25Sb3V0ZTogXCIvc2lnbnVwY29tcGxldGlvbi9cIixcbiAgICBzdWJzY3JpYmVSb3V0ZTogXCIvc2lnbnVwXCIsXG4gICAgdW5zdWJzY3JpYmVSb3V0ZTogXCIvc3Vic2NyaXB0aW9uL3N0b3AvXCIsXG4gICAgdXBkYXRlVXNlckluZm9zOiBcIi9tb2RpZnkvXCIsXG4gICAgdmFsaWRhdGVVc2VyUm91dGU6IFwiL3ZhbGlkYXRlL1wiLFxuICAgIC8vIGZvcm1zIDogw6AgY29tcGzDqXRlciBhdmVjIHZhbGV1cnMgcGFyIGTDqWZhdXQsIGV0Yy4gY2YgbW9kw6hsZVxuICAgIG5hbWU6IHsgbWF4bGVuZ3RoOiA3MCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBlbWFpbDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBwYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiwgcmVxdWlyZWQ6IHRydWUgfSwgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmNyeXB0I3NlY3VyaXR5LWlzc3Vlcy1hbmQtY29uY2VybnNcbiAgICBuZXdQYXNzd29yZDogeyBtaW5sZW5ndGg6IDgsIG1heGxlbmd0aDo3MiB9LFxuICAgIGNvZGVHb2RmYXRoZXI6IHsgbWF4bGVuZ3RoOiAyNTUgfSxcbiAgICBjZ3VPazogeyB2YWx1ZTogXCJ0cnVlXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB0aW1lRGlmZmVyZW5jZU1pbjogLTcyMCxcbiAgICB0aW1lRGlmZmVyZW5jZU1heDogODQwLFxuICAgIC8vIEpTT04gZGlyXG4gICAgZGlyQ2FjaGVVc2VycyA6IFwiZGF0YXMvdXNlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvYW5zd2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXMvd2l0aG91dFwiXG59O1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2Fuc3dlclwiOiBcIi4uL2xhbmcvZnIvYW5zd2VyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvYW5zd2VyJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwgOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBjZXJ0YWluLCB2b3VzIGZlcmV6IG1pZXV4IGxhIHByb2NoYWluZSBmb2lzICFcIixcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0TWVkaXVtIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQydlc3QgcGFzIG1hbCBkdSB0b3V0ICFcIixcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcyA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEJyYXZvICEgUmllbiBuZSB2b3VzIMOpY2hhcHBlICFcIixcbiAgICBuZWVkSW50ZWdlck51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllci5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclNlY29uZGVzUmVzcG9uc2UgOiBcIkxhIGR1csOpZSBkZSBsYSByw6lwb25zZSBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIgZGUgc2Vjb25kZXMuXCIsXG4gICAgbmVlZEludGVnZXJOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllci5cIixcbiAgICBuZWVkTWF4TnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGF1c3NpIMOpbGV2w6kuXCIsXG4gICAgbmVlZE1pbk51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgbmUgcGV1dCDDqnRyZSBpbmbDqXJpZXVyIMOgIDEuXCIsXG4gICAgbmVlZE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIGRvaXQgw6p0cmUgZm91cm5pLlwiLFxuICAgIG5lZWROdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IGRvaXQgw6p0cmUgZm91cm5pLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIHN1cMOpcmlldXIgYXUgbm9tYnJlIGRlIHF1ZXN0aW9ucy5cIixcbiAgICBuZWVkTWluTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgbmUgcGV1dCDDqnRyZSBuw6lnYXRpZi5cIixcbiAgICBuZWVkTWluTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIG5lIHBldXQgw6p0cmUgbsOpZ2F0aXZlLlwiLFxuICAgIG5vUHJldmlvdXNBbnN3ZXI6IFwiT24gZGlyYWl0IHF1ZSBjJ2VzdCBsYSBwcmVtacOocmUgZm9pcyBxdWUgdm91cyByw6lwb25kZXogw6AgY2UgcXVpei4gQm9ubmUgbGVjdHVyZSAhXCIsXG4gICAgcHJldmlvdXNBbnN3ZXJzTGluZTogXCJMZSBEQVRFQU5TV0VSLCB2b3VzIGF2ZXogcsOpcG9uZHUgY29ycmVjdGVtZW50IMOgIE5CQ09SUkVDVEFOU1dFUlMgcXVlc3Rpb25zIHN1ciBOQlFVRVNUSU9OUyBlbiBBVkdEVVJBVElPTiBzZWNvbmRlcy5cIixcbiAgICBwcmV2aW91c0Fuc3dlcnNTdGF0czogXCJFbiBtb3llbm5lLCB2b3VzIGF2ZXogcsOpcG9uZHUgw6AgY2UgcXVpeiBlbiBBVkdEVVJBVElPTiBzZWNvbmRlcywgZW4gYXlhbnQgPGI+QVZHQ09SUkVDVEFOU1dFUlMgJSBkZSBib25uZXMgcsOpcG9uc2VzPC9iPi5cIixcbiAgICBwcmV2aW91c0Fuc3dlcnNUaXRsZTogXCJCb25qb3VyICNOT00sIHZvaWNpIHZvcyBwcsOpY8OpZGVudHMgcsOpc3VsdGF0cyDDoCBjZSBxdWl6XCIsXG4gICAgcmVzcG9uc2VTYXZlZEVycm9yIDogXCJDZXBlbmRhbnQgdW5lIGVycmV1ciBhIMOpdMOpIHJlbmNvbnRyw6llIGR1cmFudCBsJ2VucmVnaXN0cmVtZW50IGRlIHZvdHJlIHLDqXN1bHRhdC4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICByZXNwb25zZVNhdmVkTWVzc2FnZSA6IFwiVm90cmUgcsOpc3VsdGF0IGEgw6l0w6kgZW5yZWdpc3Ryw6kuIDxhIGhyZWY9Jy8jVVJMJz5BY2PDqGRlciDDoCB0b3VzIHZvcyBxdWl6czwvYT4uXCIsXG4gICAgc3RhdHNVc2VyOiBcIlZvdXMgYXZleiBlbnJlZ2lzdHLDqSA8Yj5OQkFOU1dFUlMgcsOpcG9uc2VTMSDDoCBOQlFVRVNUSU9OTkFJUkVTIHF1aXpTMiBkaWZmw6lyZW50UzM8L2I+IHN1ciBsZXMgTkJUT1RRVUVTVElPTk5BSVJFUyBwcm9wb3PDqVM0IHBhciBsZSBzaXRlLjxicj5FbiBtb3llbm5lLCB2b3VzIGF2ZXogbWlzIEFWR0RVUkFUSU9OIHNlY29uZGVzIMOgIHLDqXBvbmRyZSBldCBhdmV6IDxiPmNvcnJlY3RlbWVudCByw6lwb25kdSDDoCBBVkdDT1JSRUNUQU5TV0VSUyAlIGRlcyBxdWVzdGlvbnM8L2I+LlwiLFxuICAgIHdhbnRUb1NhdmVSZXNwb25zZXM6IFwiU2kgdm91cyBsZSBzb3VoYWl0ZXosIHZvdXMgcG91dmV6IDx1PjxiPnNhdXZlZ2FyZGVyIHZvdHJlIHLDqXN1bHRhdDwvYj48L3U+IGVuIGNyw6lhbnQgdm90cmUgY29tcHRlIGNpLWRlc3NvdXMuIENlbGEgdm91cyBwZXJtZXR0cmEgYXVzc2kgZGUgPHU+PGI+cmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBcXFwiZ3JhaW5lcyBkZSBjdWx0dXJlXFxcIjwvYj48L3U+IGRpcmVjdGVtZW50IHN1ciB2b3RyZSBlLW1haWwuXCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIi8vIFF1ZWxxdWVzIGZvbmN0aW9ucyB1dGlsZXMgcG91ciBsZXMgY2hhw65uZXNcblxuY2xhc3MgVG9vbFxue1xuICAgIHN0YXRpYyBpc0VtcHR5KG15VmFyKVxuICAgIHtcbiAgICAgICAgaWYobXlWYXI9PT11bmRlZmluZWQgfHwgbXlWYXI9PT1udWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlWYXIrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlWYXI9bXlWYXIudHJpbSgpO1xuICAgICAgICAgICAgaWYobXlWYXI9PT1cIlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgdHJpbUlmTm90TnVsbChteVN0cmluZylcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShteVN0cmluZykpXG4gICAgICAgICAgICBteVN0cmluZz1udWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgc2hvcnRlbklmTG9uZ2VyVGhhbihteVN0cmluZywgbWF4KVxuICAgIHtcbiAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gYXUgY2FzIG/DuSBjZWxhIG5lIHNlcmFpdCBwYXMgdW5lIGNoYcOubmUuLi5cbiAgICAgICBpZihteVN0cmluZy5sZW5ndGggPiBtYXgpXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy5zdWJzdHJpbmcoMCwgKG1heC0zKSkrXCLigKZcIjtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NjA0MTQwL3JlcGxhY2UtbXVsdGlwbGUtc3RyaW5ncy13aXRoLW11bHRpcGxlLW90aGVyLXN0cmluZ3NcbiAgICBzdGF0aWMgcmVwbGFjZUFsbChteVN0cmluZywgbWFwT2JqKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZUVsdHMgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKG1hcE9iaikuam9pbihcInxcIiksXCJnaVwiKTtcbiAgICAgICAgcmV0dXJuIG15U3RyaW5nLnJlcGxhY2UocmVwbGFjZUVsdHMsIChtYXRjaGVkKSA9PlxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gbWFwT2JqW21hdGNoZWRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9PYmpldHNfZ2xvYmF1eC9NYXRoL3JhbmRvbVxuICAgIHN0YXRpYyBnZXRSYW5kb21JbnQobWluLCBtYXgpXG4gICAge1xuICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuICAgIH1cblxuICAgIC8vIMOgIGNvbXBsw6l0ZXIgOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRlX2Zvcm1hdF9ieV9jb3VudHJ5XG4gICAgc3RhdGljIGRhdGVGb3JtYXQoZGF0ZVN0cmluZywgbGFuZz1cImZyXCIpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkoZGF0ZVN0cmluZykpXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgbGV0IG15RGF0ZT1uZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgICAgbGV0IG15RGF5PW15RGF0ZS5nZXREYXRlKCkrXCJcIjtcbiAgICAgICAgaWYobXlEYXkubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15RGF5PVwiMFwiK215RGF5O1xuICAgICAgICBsZXQgbXlNb3VudGg9KG15RGF0ZS5nZXRNb250aCgpKzEpK1wiXCI7XG4gICAgICAgIGlmKG15TW91bnRoLmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteU1vdW50aD1cIjBcIitteU1vdW50aDtcbiAgICAgICAgbGV0IG15WWVhcj1teURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgaWYobGFuZz09PVwiZnJcIilcbiAgICAgICAgICAgIHJldHVybiBteURheStcIi9cIitteU1vdW50aCtcIi9cIitteVllYXI7XG4gICAgICAgIGVsc2UgaWYgKGxhbmc9PT1cImZvcm1cIikvLyAyMDE0LTAyLTA5XG4gICAgICAgICAgICByZXR1cm4gbXlZZWFyK1wiLVwiK215TW91bnRoK1wiLVwiK215RGF5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbXlNb3VudGgrXCIvXCIrbXlEYXkrXCIvXCIrbXlZZWFyO1xuICAgIH1cblxuICAgIC8vIE9uIGVubMOodmUgdm9sb250YWlyZW1lbnQgbGVzIDAvTyBwb3VyIMOpdml0ZXIgbGVzIGNvbmZ1c2lvbnMgIVxuICAgIC8vIEV0IG1pZXV4IHZhdXQgYXVzc2kgZMOpYnV0ZXIgZXQgZmluaXIgcGFyIHVuZSBsZXR0cmUgc2ltcGxlLlxuICAgIHN0YXRpYyBnZXRQYXNzd29yZCAobmJDYXJNaW4sIG5iQ2FyTWF4KVxuICAgIHtcbiAgICAgICAgY29uc3QgbmJDYXI9bmJDYXJNaW4rTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuYkNhck1heC1uYkNhck1pbikpO1xuICAgICAgICBjb25zdCBsZXR0ZXJzPVwiQUJDREVGR0hJSktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eXpcIjtcbiAgICAgICAgY29uc3Qgb3RoZXJzPVwiMTIzNDU2Nzg5IT8uKi1fJUAmw4nDgMOIw5nigqwkw4LDisObw45cIjtcbiAgICAgICAgbGV0IHBhc3N3b3JkPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIGZvcihsZXQgaT0xO2k8KG5iQ2FyLTEpO2krKylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoKGkgJSAyKSA9PT0xKVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1vdGhlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm90aGVycy5sZW5ndGgpXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTsgICBcbiAgICAgICAgfVxuICAgICAgICBwYXNzd29yZCs9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb29sOyIsInZhciBtYXAgPSB7XG5cdFwiLi9kZWZhdWx0L2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCIsXG5cdFwiLi93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi92aWV3cyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC5qcyRcIjsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIgfSB9LFxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVS5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NndS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlYuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3YuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgXSxcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTAsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlIDogXCJhZG1pbi5odG1sXCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAxMCxcbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIkF2ZWMgV2lraUxlcm5pIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgZGUgbm91dmVsbGVzIGNob3Nlcy48YnI+RGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgc29udCBzw6lsZWN0aW9ubsOpcyBwb3VyIHZvdXMgZXQgc29udCBzdWl2aXMgZCd1biBxdWl6IHZvdXMgcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciBkZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBzYXZvaXIgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgXFxcImphcmRpblxcXCIuXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIlRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEgKCopLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHBhcnRhZ8OpIHN1ciBXaWtpTGVybmkgc29udCBsaWJyZXMuPGJyPlZvdXMgcG91dmV6IGxlcyB1dGlsaXNlciwgbGVzIG1vZGlmaWVyIGV0IGxlcyBkaWZmdXNlciBzZWxvbiB2b3RyZSBzb3VoYWl0Ljxicj5TdXIgV2lraUxlcm5pLCBwYXMgZGUgcHVibGljaXTDqSwgbmkgZGUgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcy48YnI+Vm91cyBwb3V2ZXogdmVuaXIgeSBcXFwiY3VsdGl2ZXIgdm90cmUgamFyZGluXFxcIiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjxicj48YnI+PHNtYWxsPjxlbT4oKikgQmllbiBxdWUgcGFydGFnZWFudCBzZXMgdmFsZXVycywgV2lraUxlcm5pIGVzdCB1biBwcm9qZXQgaW5kw6lwZW5kYW50IGRlIGxhIGZvbmRhdGlvbiBXaWtpcMOpZGlhLjwvZW0+PC9zbWFsbD5cIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkxlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJMaXN0ZSBkZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaS5cIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmkgP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIkxlIHByaW5jaXBlIGVzdCBzaW1wbGUgOiB2b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBsJ2FydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6kuPGJyPlB1aXMgdm91cyBhZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmUuIFZvdXMgb2J0ZW5leiBhbG9ycyB2b3RyZSByw6lzdWx0YXQgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5Ub3V0ZXMgbGVzIHLDqXBvbnNlcyBzZSB0cm91dmVudCBkYW5zIGwnYXJ0aWNsZSBwcm9wb3PDqSDDoCBsYSBsZWN0dXJlLiA8Yj5Wb3VzIMOqdGVzIGljaSBwb3VyIGFwcHJlbmRyZSBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiwgbWFpcyBsaWJyZSDDoCB2b3VzIGQnZXNzYXllciBkJ3kgcsOpcG9uZHJlIGltbcOpZGlhdGVtZW50Ljxicj48YnI+UXVhbmQgbGUgc3VqZXQgcyd5IHByw6p0ZSwgbmUgdm91cyDDqXRvbm5leiBwYXMgc2kgY2VydGFpbmVzIGRlcyByw6lwb25zZXMgcHJvcG9zw6llcyBwZXV2ZW50IMOqdHJlIHVuIHBldSBkw6ljYWzDqWVzLCBhYnN1cmRlcy4uLiBPbiBwZXV0IGFwcHJlbmRyZSBhdmVjIGxlIHNvdXJpcmUsIG5vbiA/IDotKTxicj48YnI+VW5lIGZvaXMgdm90cmUgcsOpc3VsdGF0IG9idGVudSwgaWwgdm91cyBzZXJhIHByb3Bvc8OpIGRlIGNyw6llciB1biBjb21wdGUgcG91ciBsZSBzYXV2ZWdhcmRlci48YnI+Q2UgY29tcHRlIHZvdXMgcGVybWV0dHJhIGRlIHRlc3RlciBkZSBub3V2ZWF1IGNlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgcGx1c2lldXJzIGpvdXJzLCBzZW1haW5lcywgbW9pcy4uLiBFdCBkZSByZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIHN1Z2dlc3Rpb25zIGRlIGxlY3R1cmVzLjxicj48YnI+TWFpcyA8Yj5sYSBjcsOpYXRpb24gZGUgY2UgY29tcHRlIGVzdCBmYWN1bHRhdGl2ZTwvYj4gZXQgPGEgaHJlZj0nL3F1aXpzLycgdGl0bGU9J0xlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyc+dm91cyBwb3V2ZXogcGFyY291cmlyIFdpa2lMZXJuaSBsaWJyZW1lbnQ8L2E+LlwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgdGFnc0xpc3RUeHQ6IFwiUGFyY291cmlyIGxlcyBydWJyaXF1ZXMgOlwiLFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gbGllbnMgZGUgbCdpbnRlcmZhY2VcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJQYXJjb3VyaXJcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL3F1aXpzL1wiLCBpZDpcImluZGV4SGVhZExpbmtcIiwgdGl0bGU6XCJMZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnNcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiLCB0aXRsZTpcIkFjY8OpZGVyIG91IGNyw6lleiB2b3RyZSBjb21wdGUgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiwgdGl0bGU6XCJFbiBzYXZvaXIgKyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiwgdGl0bGU6XCJQYWdlIGQnYWNjdWVpbFwiIH0gfVxuICAgIF0sXG4gICAgZm9vdExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQmxvZ1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCJodHRwczovL2ZyYW1hc3BoZXJlLm9yZy9wZW9wbGUvN2U1NGI3YTBiNTMyMDEzODllZWYyYTAwMDAwNTM2MjVcIiwgdGl0bGU6XCJMZSBibG9nIFdpa2lMZXJuaSBzdXIgZGlhc3BvcmEqXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIsIHRpdGxlOlwiUXVpIGEgY3LDqcOpIFdpa2lMZXJuaSA/IFF1ZWxzIHNvbnQgdm9zIGRyb2l0cyA/XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiwgdGl0bGU6XCJWb3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNHViAmIENHVVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvQ0dWLUNHVS5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfVxuICAgIF0sXG4gICAgYWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICBhYm91dFBhZ2U6IFwiYS1wcm9wb3MuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2U6IFwiYWRtaW4uaHRtbFwiLFxuICAgIGNndVBhZ2U6IFwiQ0dWLUNHVS5odG1sXCIsXG4gICAgY29ubmVjdGlvblBhZ2UgOiBcImNvbm5leGlvbi5odG1sXCIsXG4gICAgZGVsZXRlTGlua1BhZ2UgOiBcImF1cmV2b2lyLmh0bWw/dD1cIixcbiAgICBsb2dpbkxpbmtQYWdlIDogXCJsb2dpbi5odG1sP3Q9XCIsXG4gICAgbWFuYWdlckhvbWVQYWdlIDogXCJnZXN0aW9uLmh0bWxcIixcbiAgICBuZXdMb2dpbkxpbmtQYWdlIDogXCJuZXdsb2dpbi5odG1sP3Q9XCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIiwgICAgXG4gICAgc3RvcE1haWxQYWdlIDogXCJzdG9wLW1haWwuaHRtbD90PVwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICB1cGRhdGVBY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlVHh0IDogXCJNYSBwYWdlIGQnYWNjdWVpbC5cIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICB2YWxpZGF0aW9uTGlua1BhZ2UgOiBcInZhbGlkYXRpb24uaHRtbD90PVwiLFxuICAgIC8qIFRleHRlcyAoZ8OpbsOpcmFsKSAqL1xuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICBtYWlsUmVjaXBpZW50VHh0OiBcIk1lc3NhZ2UgZW52b3nDqSDDoCA6XCIsXG4gICAgbGljZW5jZVR4dDogXCJAY29weWxlZnQgTGUgY29udGVudSBkZSBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzID9cXFwiPmVzdCBsaWJyZTwvYT4gZXQgdm91cyBlc3Qgb2ZmZXJ0IHNhbnMgcHVibGljaXTDqS4gVm91cyBwb3V2ZXogPGEgaHJlZj1cXFwiL3BhcnRpY2lwZXItZmluYW5jZW1lbnQuaHRtbFxcXCIgdGl0bGU9XFxcIkZpbmFuY2VtZW50IHBhcnRpY2lwYXRpZiBhdmVjIGNvbnRyZS1wYXJ0aWVzXFxcIj5wYXJ0aWNpcGVyIMOgIHNvbiBmaW5hbmNlbWVudCBlbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIC8qIFBhZ2UgZCdhY2N1ZWlsICovXG4gICAgaG9tZVBhZ2VUeHQ6IFwiUGFnZSBkJ2FjY3VlaWxcIixcbiAgICBob21lVGl0bGUxOiBcIkRlIG5hdHVyZSBjdXJpZXVzZSA/XCIsXG4gICAgaG9tZVAxOiBcIjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPi48YnI+Vm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcywgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlcy48YnI+RGVzIHF1aXpzIHZvdXMgcGVybWV0dGVudCBlbnN1aXRlIGRlIHRlc3RlciBjZSBxdWUgdm91cyBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIDxiPmRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIGN1bHR1cmUgc29udCBhaW5zaSBzZW3DqWVzIGRhbnMgdm90cmUgamFyZGluPC9iPi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCI8Yj5QYXMgZGUgZmFpdHMgYWx0ZXJuYXRpZnM8L2I+LCB0b3VzIGxlcyBjb250ZW51cyBzb250IDxiPnNvdXJjw6lzIHBhciBkZXMgYXJ0aWNsZXMgV2lraXDDqWRpYTwvYj4uPGJyPkV0IHRvdXQgY29tbWUgc3VyIFdpa2lww6lkaWEsIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcHVibGnDqSBzdXIgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyBzdXIgY2Ugc3VqZXRcXFwiPnNvbnQgcGFydGFnw6lzIHNvdXMgbGljZW5jZXMgbGlicmVzPC9hPi48YnI+TGUgdG91dCBzYW5zIHB1YmxpY2l0w6ksIG5pIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcy48YnI+PGI+U3VyIFdpa2lMZXJuaSwgdm91cyBjdWx0aXZleiB2b3RyZSBqYXJkaW4gZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48L2I+XCIsXG4gICAgaG9tZUJ0bkFib3V0VHh0OiBcIkVuIHNhdm9pciBwbHVzIHN1ciBXaWtpTGVybmkgP1wiLFxuICAgIGhvbWVCdG5TdWJzY3JpYmVUeHQ6ICBcIlRlc3RleiBXaWtpTGVybmlcIixcbiAgICBob21lU3ViY3JpcHRpb25Gb3JtVGl0bGU6ICBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICAvKiBQYWdlIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLi4uICovICAgXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pXCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNJbnRybzogXCJXaWtpTGVybmkgOiB0ZXN0ZXogdm9zIGNvbm5haXNzYW5jZXMgZXQgYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaS5cIixcbiAgICBuZXdzTGlzdFRpdGxlOiBcIjxwPjxiPkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIHF1ZWxxdWUgY2hvc2UgZGUgbm91dmVhdTwvYj48YnI+U2kgZGVzc291cyBsZXMgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuIFZvdXMgcG91dmV6IGF1c3NpIDxhIGhyZWY9Jy9xdWl6cy90aGVtZXMuaHRtbCc+cGFyY291cmlyIGxlIHNpdGUgcGFyIHRow6htZXMgb3UgbW90cy1jbMOpczwvYT4uPC9wPlwiLFxuICAgIC8qIFBsYW4gZHUgc2l0ZSwgbGlzdGUgZGVzIHRhZ3MgKi8gICBcbiAgICB0YWdMaXN0VGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gZGVzIGFydGljbGVzIGV0IHF1aXpzIHN1ciBkZSBub21icmV1eCB0aMOobWVzICFcIixcbiAgICB0YWdMaXN0TWV0YURlc2M6IFwiV2lraUxlcm5pIDogZMOpY291dnJpciBsZXMgZGlmZsOpcmVudHMgdGjDqG1lcyBhYm9yZMOpcyBwYXIgV2lraUxlcm5pLiBJbnhleCBkdSBzaXRlLlwiLFxuICAgIHRhZ0xpc3RJbnRybzogXCI8aDM+QXZlYyBXaWtpTGVybmksIGRldmVuZXogZm9ydCBlbiB0aMOobWVzLi4uIE91aSBtYWlzIHF1ZWxzIHRow6htZXMgPyA6KTwvaDM+PGJsb2NrcXVvdGU+QXJpc3RvdGXigK86IMKr4oCvTOKAmWhvbW1lIGEgbmF0dXJlbGxlbWVudCBsYSBwYXNzaW9uIGRlIGNvbm5hw650cmXigKbigK/CuzwvYmxvY2txdW90ZT5cIixcbiAgICAvKiBQYWdlIHF1aXpzICovXG4gICAgYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0OiBcIlJlbGlyZVwiLFxuICAgIHF1aXpFbGVtZW50TGlua3NJbnRybzogXCJFbiBzYXZvaXIgcGx1c1wiLFxuICAgIHF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGU6IFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaeKArz9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCI8cD5MZSBwcmluY2lwZSBlc3Qgc2ltcGxl4oCvOiA8Yj52b3VzIGNvbW1lbmNleiBwYXIgbGlyZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqTwvYj4uIFB1aXMgdm91cyA8Yj5hZmZpY2hlciBsZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51IGRlIHZvdHJlIGxlY3R1cmU8L2I+LiBTdWl2YW50IGxlcyBxdWVzdGlvbnMsIDxiPnVuZSBvdSBwbHVzaWV1cnMgcsOpcG9uc2VzIHBldXZlbnQgw6p0cmUgY29ycmVjdGVzPC9iPiBldCBkb2l2ZW50IGRvbmMgw6p0cmUgY29jaMOpZXMuIEPigJllc3QgdG91am91cnMgPGI+bGUgY29udGVudSBkZSBs4oCZYXJ0aWNsZSBXaWtpcMOpZGlhIHF1aSBmYWl0IGZvaTwvYj4gY29uY2VybmFudCBsZXMgwqvigK9ib25uZXPigK/CuyByw6lwb25zZXMuIEPigJllc3QgdW5lIGZhw6dvbiBkZSB0ZXN0ZXIgw6AgbGEgZm9pcyB2b3RyZSBjYXBhY2l0w6kgZOKAmWF0dGVudGlvbiBldCB2b3RyZSBtw6ltb2lyZS4gTGVzIGFydGljbGVzIGRlIFdpa2lww6lkaWEgcGV1dmVudCDDqXZvbHVlciwgZG9uYyBu4oCZaMOpc2l0ZXogcGFzIDxhIGhyZWY9Jy9jb250YWN0Lmh0bWwnPsOgIG1lIHNpZ25hbGVyIHVuZSBlcnJldXI8L2E+LjwvcD48cD48Yj5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGTigJlhdXRyZXMgc29sdXRpb25zIHBvdXIgYW3DqWxpb3JlciB2b3RyZSBjdWx0dXJlIGfDqW7DqXJhbGU8L2I+LiBQb3VyIGVuIHNhdm9pciBwbHVzLCBjbGlxdWV6IHN1ciBsZSBib3V0b24gY2ktZGVzc291cy48L3A+XCIsXG4gICAgZXhwbGFuYXRpb25FbGVtZW50VHh0OiBcIjxwPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZGUgPGI+cmVjZXZvaXIgcGFyIGUtbWFpbCDDoCBsYSBmcsOpcXVlbmNlIGNob2lzaWUsIGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzPC9iPiBldCBwb3J0YW50IHN1ciBkZXMgc3VqZXRzIHRyw6hzIHZhcmnDqXMgZGUgPGI+Y3VsdHVyZSBnw6luw6lyYWxlPC9iPiAoYXJ0cywgaGlzdG9pcmUsIGxpdHTDqXJhdHVyZSwgc2NpZW5jZXMsIGV0Yy4pLjwvcD48cD5DZXMgYXJ0aWNsZXMgc29udCBiYXPDqXMgc3VyIDxiPnVuZSBvdSBwbHVzaWV1cnMgcGFnZXMgZGUgV2lraXDDqWRpYTwvYj4gKGZvdXJuaWVzIGVuIGxpZW4pLCBkb250IDxiPmlscyBleHRyYWllbnQgY2VydGFpbmVzIGluZm9ybWF0aW9uczwvYj4uPC9wPjxwPkNoYXF1ZSBzw6lyaWUgZOKAmWFydGljbGVzIGVzdCA8Yj5zdWl2aWUgZOKAmXVuIHF1aXo8L2I+IHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51LjwvcD48cD48Yj5Wb3VzIGFwcHJlbmV6IGFpbnNpIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzPC9iPiB0csOocyBzaW1wbGVtZW50LjwvcD5cIixcbiAgICAvKiBBdXRyZXMgKi9cbiAgICBpbGx1c3RyYXRpb25EaXIgOiBcIi9pbWcvcXVpenMvXCIsXG4gICAgdHdpdHRlckFjY291bnQ6IFwiV2lraUxlcm5pXCIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEyLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlOiAzLFxuICAgIG5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UgOiAzLFxufTsiLCIvLyDDoCBzdXBwcmltZXIgdW5lIGZvaXMgcXVlIHRvdXQgcsOpY3Vww6lyZXIgZHUgYmFja2VuZCA6XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmwgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlcIixcbiAgICB1c2Vyc0dldENvbmZpZ1VybCA6IFwiL3VzZXIvZ2V0Y29uZmlnXCIsXG4gICAgbGFuZyA6IFwiZnJcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIlxufTsiLCIvLyAtLSBHRVNUSU9OIERVIEZPUk1VTEFJUkUgUEVSTUVUVEFOVCBEJ0FGRklDSEVSIEVUIFLDiVBPTkRSRSDDgCBVTiBRVUlaXG5cbi8vLyBJbCBuJ2VzdCBwYXMgbsOpY2Vzc2FpcmUgZCfDqnRyZSBjb25uZWN0w6kgcG91ciByw6lwb25kcmUgYXUgcXVpeiBldCB2b2lyIHNvbiByw6lzdWx0YXQuXG4vLy8gTWFpcyBzaSBwYXMgY29ubmVjdMOpLCBvbiBwcm9wb3NlIMOgIGwnaW50ZXJuYXV0ZSBkZSBzZSBjb25uZWN0ZXIgb3UgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIHNhdXZlZ2FyZGVyIHNvbiByw6lzdWx0YXQuXG4vLy8gRGFucyBjZSBidXQgc29uIHLDqXN1bHRhdCBlc3Qgc3RvY2vDqSBkYW5zIHNvbiBuYXZpZ2F0ZXVyLlxuLy8vIFNpIGlsIGVzdCBjb25uZWN0w6ksIGwnZW5yZWdpc3RyZW1lbnQgZGUgc29uIHLDqXN1bHRhdCBzZSBmYWl0IGF1dG9tYXRpcXVlbWVudCBjw7R0w6kgc2VydmV1ciBldCBzZXMgw6l2ZW50dWVscyBwcsOpY8OpZGVudHMgcsOpc3VsdGF0cyBzb250IGFmZmljaMOpcy5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcbmltcG9ydCB7IGdldFByZXZpb3VzQW5zd2VycywgcXVlc3Rpb25uYWlyZVJvdXRlcywgc2F2ZUFuc3dlcnNSb3V0ZSB9IGZyb20gXCIuLi8uLi9jb25maWcvcXVlc3Rpb25uYWlyZXMuanNcIjtcbmNvbnN0IGNvbmZpZ1RlbXBsYXRlID0gcmVxdWlyZShcIi4uLy4uL3ZpZXdzL1wiK3RoZW1lK1wiL2NvbmZpZy9cIitsYW5nK1wiLmpzXCIpO1xuXG5pbXBvcnQgeyBjaGVja0Fuc3dlck91cHV0LCBzYXZlQW5zd2VyIH0gZnJvbSBcIi4vdG9vbHMvYW5zd2Vycy5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZ2V0TG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGF0YXNGcm9tSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGRhdGVGb3JtYXQsIHJlcGxhY2VBbGwgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBnZXRUaW1lRGlmZmVyZW5jZSB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBub1ByZXZpb3VzQW5zd2VyLCBwcmV2aW91c0Fuc3dlcnNMaW5lLCBwcmV2aW91c0Fuc3dlcnNTdGF0cywgcHJldmlvdXNBbnN3ZXJzVGl0bGUsIHJlc3BvbnNlU2F2ZWRFcnJvciwgd2FudFRvU2F2ZVJlc3BvbnNlcyB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9hbnN3ZXJcIik7XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG5jb25zdCBteUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1ZXN0aW9ubmFpcmVcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBidG5TaG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93UXVlc3Rpb25uYWlyZVwiKTtcbmNvbnN0IGJ0blN1Ym1pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2hlY2tSZXNwb25zZXNcIik7XG5jb25zdCBleHBsYW5hdGlvbnNUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXhwbGFuYXRpb25zVGl0bGVcIik7XG5jb25zdCBleHBsYW5hdGlvbnNDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJleHBsYW5hdGlvbnNDb250ZW50XCIpO1xuXG5sZXQgaXNDb25uZWN0ZWQsIHVzZXI7XG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGJ0blNob3cuc3R5bGUuZGlzcGxheT1cImlubGluZVwiOy8vIGJvdXRvbiBjYWNow6kgc2kgSlMgaW5hY3RpZiwgY2FyIEpTIG7DqWNlc3NhaXJlIHBvdXIgdsOpcmlmaWVyIGxlcyByw6lwb25zZXNcbiAgICAgICAgaXNDb25uZWN0ZWQ9YXdhaXQgY2hlY2tTZXNzaW9uKFtcInVzZXJcIl0pOy8vIFwidXNlclwiIGNhciBzZXVscyBsZXMgdXRpbGlzYXRldXJzIGRlIGJhc2UgcGV1dmVudCBlbnJlZ2lzdHJlciBsZXVycyByw6lwb25zZXMgYXV4IHF1aXpzXG4gICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgZXN0IGNvbm5lY3TDqSBldCBhIGTDqWrDoCByw6lwb25kdSDDoCBjZSBxdWl6LCBvbiBhZmZpY2hlIHNlcyBwcsOpY8OpZGVudGVzIHLDqXBvbnNlcyDDoCBsYSBwbGFjZSBkdSB0ZXh0ZSBzZXJ2YW50IMOgIGV4cGxpcXVlciBsZSB0b3BvIGF1eCBub3V2ZWF1eFxuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgdXNlcj1nZXRMb2NhbHkoXCJ1c2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlQWNjb3VudExpbmsodXNlci5zdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKTsvLyBsaWVuIHZlcnMgbGUgY29tcHRlIGFkYXB0w6kgcG91ciBsZXMgdXRpbGlzYXRldXJzIGNvbm5lY3TDqXNcbiAgICAgICAgICAgIGNoZWNrUHJldmlvdXNSZXNwb25zZXModXNlcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7XG5oZWxsb0RldigpO1xuXG4vLyBBZmZpY2hhZ2UgZHUgcXVlc3Rpb25uYWlyZSBxdWFuZCBsJ3V0aWxpc2F0ZXVyIGNsaXF1ZSBzdXIgbGUgYm91dG9uIG91IHNpIGwnaWQgZHUgZm9ybXVsYWlyZSBlc3QgcGFzc8OpZSBwYXIgbCd1cmwuXG4vLyBEw6ljbGVuY2hlIGVuIG3Dqm1lIHRlbXBzIGxlIGNocm9ub23DqHRyZSBtZXN1cmFudCBsYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UgYXV4IHF1ZXN0aW9ucy5cbmNvbnN0IHNob3dRdWVzdGlvbm5haXJlID0gKCkgPT5cbntcbiAgICBjaHJvbm9CZWdpbj1EYXRlLm5vdygpO1xuICAgIG15Rm9ybS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICBidG5TaG93LnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG4gICAgY29uc3QgaGVyZT13aW5kb3cubG9jYXRpb247Ly8gd2luZG93LmxvY2F0aW9uIMOgIGFqb3V0ZXIgcG91ciBuZSBwYXMgcXVpdHRlciBsYSBwYWdlIGVuIG1vZGUgXCJwcmV2aWV3XCIuXG4gICAgaWYod2luZG93LmxvY2F0aW9uLmhhc2ghPT1cIlwiKVxuICAgIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjsvLyAhIGxlIFwiI1wiIHJlc3RlXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oaGVyZStcInF1ZXN0aW9ubmFpcmVcIik7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihoZXJlK1wiI3F1ZXN0aW9ubmFpcmVcIik7XG59XG5sZXQgY2hyb25vQmVnaW49MDtcbmJ0blNob3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNob3dRdWVzdGlvbm5haXJlKCk7XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59KTtcbi8vIExpZW4gcGFzc8OpIHBhciBtYWlsIHBvdXIgdm9pciBkaXJlY3RlbWVudCBsZSBxdWl6XG5pZihsb2NhdGlvbi5oYXNoIT1cIlwiICYmIGxvY2F0aW9uLmhhc2g9PT1cIiNxdWVzdGlvbm5haXJlXCIpXG4gICAgc2hvd1F1ZXN0aW9ubmFpcmUoKTtcblxuLy8gVHJhaXRlbWVudCBkZSBsJ2Vudm9pIGRlIGxhIHLDqXBvbnNlIGRlIGwndXRpbGlzYXRldXIgOlxubGV0IGFuc3dlciA9IHt9O1xubXlGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgZnVuY3Rpb24oZSlcbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgXG4gICAgICAgIGJ0blN1Ym1pdC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOy8vIHNldWxlbWVudCB1biBlbnZvaSDDoCBsYSBmb2lzLCBTVlAgOilcbiAgICAgICAgZGl2UmVzcG9uc2UuaW5uZXJIVE1MPVwiXCI7Ly8gc3VwcHJpbWUgbGVzIMOpdmVudHVlbHMgbWVzc2FnZXMgZMOpasOgIGFmZmljaMOpc1xuICAgICAgICBjb25zdCB1c2VyUmVzcG9uc2VzPWdldERhdGFzRnJvbUlucHV0cyhteUZvcm0pO1xuICAgICAgICBhbnN3ZXIuZHVyYXRpb249TWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1jaHJvbm9CZWdpbikvMTAwMCk7XG4gICAgICAgIGFuc3dlci5uYlF1ZXN0aW9ucz0wO1xuICAgICAgICBhbnN3ZXIubmJDb3JyZWN0QW5zd2Vycz0wO1xuICAgICAgICBhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25uYWlyZUlkXCIpLnZhbHVlO1xuICAgICAgICAvLyBMZXMgcsOpcG9uc2VzIHNvbnQgcmVncm91cMOpZXMgcGFyIHF1ZXN0aW9uLCBkb25jIHF1YW5kIGlkUXVlc3Rpb24gY2hhbmdlLCBvbiBjb25uYcOudCBsZSByw6lzdWx0YXQgcG91ciBsYSBxdWVzdGlvbiBwcsOpY8OpZGVudGUuXG4gICAgICAgIC8vIFBvdXIgcXUndW5lIHLDqXBvbnNlIHNvaXQgYm9ubmUsIGlsIGZhdXQgY29jaGVyIHRvdXRlcyBsZXMgYm9ubmVzIHLDqXBvbnNlcyAoc2kgUUNNKSDDoCBsYSBxdWVzdGlvbiBFVCBjb2NoZXIgYXVjdW5lIGRlcyBtYXV2YWlzZXMuXG4gICAgICAgIGxldCBpZENob2ljZSwgaWRRdWVzdGlvbj1cIlwiLCBnb29kUmVzcG9uc2U9ZmFsc2U7XG4gICAgICAgIGZvcihsZXQgaXRlbSBpbiB1c2VyUmVzcG9uc2VzKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZihpdGVtLnN0YXJ0c1dpdGgoXCJpc0NvcnJlY3RfcmVzcG9uc2VfXCIpKS8vID0gTm91dmVsbGUgcsOpcG9uc2UgcG9zc2libGUuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWRDaG9pY2UgPSBpdGVtLnN1YnN0cmluZyhpdGVtLmxhc3RJbmRleE9mKFwiX1wiKSArIDEpO1xuICAgICAgICAgICAgICAgIC8vIHNpIG9uIGNoYW5nZSBkZSBxdWVzdG9uXG4gICAgICAgICAgICAgICAgaWYodXNlclJlc3BvbnNlc1tcInF1ZXN0aW9uX2lkX3Jlc3BvbnNlX1wiK2lkQ2hvaWNlXSE9aWRRdWVzdGlvbikgLy8gb24gY29tbWVuY2Ugw6AgdHJhaXRlciB1bmUgbm91dmVsbGUgcXVlc3Rpb25cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkUXVlc3Rpb249dXNlclJlc3BvbnNlc1tcInF1ZXN0aW9uX2lkX3Jlc3BvbnNlX1wiK2lkQ2hvaWNlXTtcbiAgICAgICAgICAgICAgICAgICAgYW5zd2VyLm5iUXVlc3Rpb25zKys7XG4gICAgICAgICAgICAgICAgICAgIGlmKGdvb2RSZXNwb25zZSkgLy8gcsOpc3VsdGF0IGRlIGxhIHF1ZXN0aW9uIHByw6ljw6lkZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMrKztcbiAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPXRydWU7Ly8gcsOpcG9uc2UgYm9ubmUganVzcXUnw6AgbGEgcHJlbWnDqHJlIGVycmV1ci4uLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW2l0ZW1dPT1cInRydWVcIilcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VfXCIraWRDaG9pY2UpLnBhcmVudE5vZGUuY2xhc3NMaXN0LmFkZChcImlzQ29ycmVjdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYodXNlclJlc3BvbnNlc1tcInJlc3BvbnNlX1wiK2lkQ2hvaWNlXT09PXVuZGVmaW5lZCkvLyB1bmUgYm9ubmUgcsOpcG9uc2UgbidhIHBhcyDDqXTDqSBzw6lsZWN0aW9ubsOpZVxuICAgICAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPWZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicmVzcG9uc2VfXCIraWRDaG9pY2VdPT09XCJvblwiKS8vIHLDqXBvbnNlIGNvY2jDqWUgbmUgZmFpc2FudCBwYXMgcGFydGllIGRlcyBib25uZXNcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ29vZFJlc3BvbnNlPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZV9cIitpZENob2ljZSkucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKFwiaXNOb3RDb3JyZWN0XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNpIGonYWkgYmllbiByw6lwb25kdSDDoCBsYSBkZXJuacOocmUgcXVlc3Rpb24sIGlsIGZhdXQgbGUgY29tcHRlciBpY2ksIGNhciBqZSBzdWlzIHNvcnRpIGRlIGxhIGJvdWNsZSA6XG4gICAgICAgIGlmKGdvb2RSZXNwb25zZSlcbiAgICAgICAgICAgIGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKys7XG5cbiAgICAgICAgLy8gQWZmaWNoYWdlIGR1IHLDqXN1bHRhdCwgc3VpdmFudCBzaSBsJ3V0aWxpc2F0ZXVyIGVzdCBjb25uZWN0w6kgb3UgcGFzIGV0IHNvbiBzY29yZSA6XG4gICAgICAgIGxldCBnZXRPdXB1dD1jaGVja0Fuc3dlck91cHV0KGFuc3dlcik7XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaSBsJ3V0aWxpc2F0ZXVyIGVzdCBjb25uZWN0w6ksIG9uIGVucmVnaXN0cmUgc29uIHLDqXN1bHRhdCBzdXIgbGUgc2VydmV1ci5cbiAgICAgICAgICAgIGNvbnN0IHhoclNhdmVBbnN3ZXIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIub3BlbihcIlBPU1RcIiwgYXBpVXJsK3F1ZXN0aW9ubmFpcmVSb3V0ZXMrc2F2ZUFuc3dlcnNSb3V0ZSk7XG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgeGhyUmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAxICYmICh4aHJSZXNwb25zZS5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0T3VwdXQrPVwiPGJyPlwiK3hoclJlc3BvbnNlLm1lc3NhZ2UucmVwbGFjZShcIiNVUkxcIiwgY29uZmlnVGVtcGxhdGUudXNlckhvbWVQYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrUHJldmlvdXNSZXNwb25zZXModXNlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0T3VwdXQrPVwiPGJyPlwiK3Jlc3BvbnNlU2F2ZWRFcnJvci5yZXBsYWNlKFwiI1VSTFwiLCBjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAvLyBvbiByZWRpcmlnZSB2ZXJzIGxlIHLDqXN1bHRhdFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZXJlPXdpbmRvdy5sb2NhdGlvbjsvLyB3aW5kb3cubG9jYXRpb24gw6AgYWpvdXRlciBwb3VyIG5lIHBhcyBxdWl0dGVyIGxhIHBhZ2UgZW4gbW9kZSBcInByZXZpZXdcIi4uLlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGhlcmUrXCJleHBsYW5hdGlvbnNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICBhbnN3ZXIudGltZURpZmZlcmVuY2U9Z2V0VGltZURpZmZlcmVuY2UoKTsvLyBvbiBlbiBwcm9maXRlIHBvdXIgbWV0dHJlIGxlcyBwZW5kdWxlcyDDoCBsJ2hldXJlLlxuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5zZW5kKEpTT04uc3RyaW5naWZ5KGFuc3dlcikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgeyAgIC8vIHNpIHBhcyBjb25uZWN0w6ksIG9uIGVucmVnaXN0cmUgbGUgcsOpc3VsdGF0IGPDtHTDqSBjbGllbnQgcG91ciBwZXJtZXR0cmUgZGUgbGUgcmV0cm91dmVyIGF1IG1vbWVudCBkZSBsYSBjcsOpYXRpb24gZHUgY29tcHRlIG91IGRlIGxhIGNvbm5leGlvbi5cbiAgICAgICAgICAgIGlmKHNhdmVBbnN3ZXIoYW5zd2VyKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgZ2V0T3VwdXQrPVwiPGJyPjxicj5cIit3YW50VG9TYXZlUmVzcG9uc2VzO1xuICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgZ2V0T3VwdXQsIFwiXCIsIFtcImluZm9cIl0pO1xuICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnN1YnNjcmliZUJ0bnNcIikuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIC8vIGludXRpbGUgZGUgcHJvcG9zZXIgZGUgY3LDqWVyIHVuIGNvbXB0ZSBzaSBsZSBzdG9ja2FnZSBsb2NhbCBuZSBmb25jdGlvbm5lIHBhc1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBnZXRPdXB1dCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAvLyBvbiByZWRpcmlnZSB2ZXJzIGxlIHLDqXN1bHRhdFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9XCJcIjtcbiAgICAgICAgICAgIGNvbnN0IGhlcmU9d2luZG93LmxvY2F0aW9uOy8vIHdpbmRvdy5sb2NhdGlvbiDDoCBham91dGVyIHBvdXIgbmUgcGFzIHF1aXR0ZXIgbGEgcGFnZSBlbiBtb2RlIFwicHJldmlld1wiLi4uXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGhlcmUrXCJyZXNwb25zZVwiKTsgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIC8vICsgYWZmaWNoYWdlIGRlcyB0ZXh0ZXMgZCdleHBsaWNhdGlvbnMgcG91ciBjaGFxdWUgcXVlc3Rpb25cbiAgICAgICAgY29uc3QgZXhwbGFuYXRpb25zPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaGVscFwiKTtcbiAgICAgICAgZm9yKGxldCBpIGluIGV4cGxhbmF0aW9ucylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYoZXhwbGFuYXRpb25zW2ldLnN0eWxlIT11bmRlZmluZWQpIC8vIHNpbm9uLCBsYSBjb25zb2xlIGFmZmljaGUgdW5lIGVycmV1ciBcIlR5cGVFcnJvcjogZXhwbGFuYXRpb25zW2ldLnN0eWxlIGlzIHVuZGVmaW5lZFwiLCBiaWVuIHF1ZSB0b3V0IGZvbmN0aW9ubmUgKD8pXG4gICAgICAgICAgICAgICAgZXhwbGFuYXRpb25zW2ldLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59KVxuXG4vLyBGb25jdGlvbiB2w6lyaWZpYW50IGxlcyBwcsOpY8OpZGVudGVzIHLDqXBvbnNlcyBkZSBsJ3V0aWxpc2F0ZXVyXG4vLyBVdGlsZSBzaSBjb25uZWN0w6kgbG9ycyBkdSBwcmVtaWVyIGNoYXJnZW1lbnQgZGUgbGEgcGFnZSwgcHVpcyBhcHLDqHMgdW5lIG5vdXZlbGxlIHLDqXBvbnNlXG5jb25zdCBjaGVja1ByZXZpb3VzUmVzcG9uc2VzID0gKHVzZXIpID0+XG57XG4gICAgY29uc3QgeGhyUHJldmlvdXNSZXMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHJQcmV2aW91c1Jlcy5vcGVuKFwiR0VUXCIsIGFwaVVybCtxdWVzdGlvbm5haXJlUm91dGVzK2dldFByZXZpb3VzQW5zd2Vycyt1c2VyLmlkK1wiL1wiK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25uYWlyZUlkXCIpLnZhbHVlKTtcbiAgICB4aHJQcmV2aW91c1Jlcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5iUmVzcG9uc2VzPXJlc3BvbnNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNBbnN3ZXJzQ29udGVudD1cIlwiO1xuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zVGl0bGUsIFwic3BhblwiLCBwcmV2aW91c0Fuc3dlcnNUaXRsZS5yZXBsYWNlKFwiI05PTVwiLCB1c2VyLm5hbWUpKTtcbiAgICAgICAgICAgICAgICBpZihuYlJlc3BvbnNlcyE9PTApXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG90TmJRdWVzdGlvbnM9MCwgdG90TmJDb3JyZWN0QW5zd2Vycz0wLCB0b3REdXJhdGlvbj0wLCBtYXBMaW5lQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpIGluIHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3ROYlF1ZXN0aW9ucys9cmVzcG9uc2VbaV0ubmJRdWVzdGlvbnM7Ly8gISBvbiBuZSBwZXV0IHNlIGJhc2VyIHN1ciBsYSB2ZXJzaW9uIGFjdHVlbGxlIGR1IHF1aXosIGNhciBsZSBub21icmUgZGUgcXVlc3Rpb25zIGEgcHUgw6l2b2x1ZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3ROYkNvcnJlY3RBbnN3ZXJzKz1yZXNwb25zZVtpXS5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90RHVyYXRpb24rPXJlc3BvbnNlW2ldLmR1cmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwTGluZUNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVBTlNXRVIgOiBkYXRlRm9ybWF0KHJlc3BvbnNlW2ldLmNyZWF0ZWRBdCwgbGFuZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJDT1JSRUNUQU5TV0VSUyA6IHJlc3BvbnNlW2ldLm5iQ29ycmVjdEFuc3dlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkJRVUVTVElPTlMgOiByZXNwb25zZVtpXS5uYlF1ZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkdEVVJBVElPTiA6IHJlc3BvbnNlW2ldLmR1cmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbnN3ZXJzQ29udGVudCs9XCI8bGk+XCIrcmVwbGFjZUFsbChwcmV2aW91c0Fuc3dlcnNMaW5lLCBtYXBMaW5lQ29udGVudCkrXCI8L2xpPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hcExpbmVDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgQVZHRFVSQVRJT04gOiBNYXRoLnJvdW5kKHRvdER1cmF0aW9uL25iUmVzcG9uc2VzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFWR0NPUlJFQ1RBTlNXRVJTIDogTWF0aC5yb3VuZCh0b3ROYkNvcnJlY3RBbnN3ZXJzL3RvdE5iUXVlc3Rpb25zKjEwMClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbnN3ZXJzQ29udGVudD1cIjxoNT5cIityZXBsYWNlQWxsKHByZXZpb3VzQW5zd2Vyc1N0YXRzLCBtYXBMaW5lQ29udGVudCkrXCI8L2g1PlwiK3ByZXZpb3VzQW5zd2Vyc0NvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJ1bFwiLCBwcmV2aW91c0Fuc3dlcnNDb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGV4cGxhbmF0aW9uc0NvbnRlbnQsIFwidWxcIiwgbm9QcmV2aW91c0Fuc3dlcik7XG4gICAgICAgICAgICAgICAgLy8gZGFucyB1biBjYXMgY29tbWUgZGFucyBsJ2F1dHJlLCBib3V0b24gcG91ciByZXZlbmlyIMOgIGwnYWNjdWVpbCBkdSBjb21wdGVcbiAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGV4cGxhbmF0aW9uc0NvbnRlbnQsIFwicFwiLCBcIjxhIGhyZWY9XFxcIi9cIitjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2UrXCJcXFwiIGNsYXNzPVxcXCJidXR0b24gY2FyZGJvYXJkXFxcIj5cIitjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2VUeHQrXCI8L2E+XCIsIFwiXCIsIFtcImJ0blwiXSwgXCJcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHhoclByZXZpb3VzUmVzLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgIHhoclByZXZpb3VzUmVzLnNlbmQoKTtcbn0iLCJjb25zdCBjb25maWdGcm9udEVuZCA9IHJlcXVpcmUoXCIuLi9jb25maWcvZ2VuZXJhbFwiKTtcblxuaW1wb3J0IHsgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHksIHJlcGxhY2VBbGwgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5jb25zdCB0eHQgPSByZXF1aXJlKFwiLi4vLi4vLi4vbGFuZy9cIitjb25maWdGcm9udEVuZC5sYW5nK1wiL2Fuc3dlclwiKTtcblxuLy8gRW5yZWdpc3RyZW1lbnQgY8O0dMOpIGNsaWVudCBkdSBkZXJuaWVyIHLDqXN1bHRhdCDDoCB1biBxdWl6IGVuIGF0dGVuZGFudCBkJ8OqdHJlIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IHNhdmVBbnN3ZXIgPSAoYW5zd2VyKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykgJiYgKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpIHx8ICFpc0VtcHR5KGFuc3dlci5Hcm91cElkKSkpXG4gICAge1xuICAgICAgICBzYXZlTG9jYWx5KFwibGFzdEFuc3dlclwiLCBhbnN3ZXIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFJldG91cm5lIHVuIHRleHRlIHN1aXZhbnQgbGUgbm9tYnJlIGRlIGJvbm5lcyByw6lwb25zZXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlck91cHV0ID0gKGFuc3dlcikgPT5cbntcbiAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpKVxuICAgIHtcbiAgICAgICAgY29uc3QgcmF0aW89YW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMvYW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICBjb25zdCBtYXBPYmo9XG4gICAgICAgIHtcbiAgICAgICAgICAgIERVUkFUSU9OOiBhbnN3ZXIuZHVyYXRpb24sXG4gICAgICAgICAgICBOQkNPUlJFQ1RBTlNXRVJTOiBhbnN3ZXIubmJDb3JyZWN0QW5zd2VycyxcbiAgICAgICAgICAgIE5CUVVFU1RJT05TOiBhbnN3ZXIubmJRdWVzdGlvbnNcbiAgICAgICAgfVxuICAgICAgICBsZXQgb3V0cHV0PVwiXCI7XG4gICAgICAgIGlmKHJhdGlvIDwgMC40KVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRGYWlsLCBtYXBPYmopO1xuICAgICAgICBlbHNlIGlmKHJhdGlvIDwgMC44KVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0sIG1hcE9iaik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG91dHB1dD1yZXBsYWNlQWxsKHR4dC5jaGVja1Jlc3BvbnNlc091cHV0U3VjY2VzcywgbWFwT2JqKTtcbiAgICAgICAgaWYob3V0cHV0KVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIFwiXCI7XG59IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9hbnN3ZXIkIiwid2VicGFjazovLy8uLi9sYW5nIHN5bmMgXlxcLlxcLy4qXFwvZ2VuZXJhbCQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvYW5zd2VyLmpzIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3F1ZXN0aW9ubmFpcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Fuc3dlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImNoZWNrUmVzcG9uc2VzT3VwdXRGYWlsIiwiY2hlY2tSZXNwb25zZXNPdXB1dE1lZGl1bSIsImNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzIiwibmVlZEludGVnZXJOdW1iZXJDb3JyZWN0UmVzcG9uc2VzIiwibmVlZEludGVnZXJOdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIiwibmVlZEludGVnZXJOdW1iZXJVc2VyUmVzcG9uc2VzIiwibmVlZE1heE51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTWluTnVtYmVyVXNlclJlc3BvbnNlcyIsIm5lZWROdW1iZXJDb3JyZWN0UmVzcG9uc2VzIiwibmVlZE51bWJlclVzZXJSZXNwb25zZXMiLCJuZWVkTWF4TnVtYmVyQ29ycmVjdFJlc3BvbnNlcyIsIm5lZWRNaW5OdW1iZXJDb3JyZWN0UmVzcG9uc2VzIiwibmVlZE1pbk51bWJlclNlY29uZGVzUmVzcG9uc2UiLCJub1ByZXZpb3VzQW5zd2VyIiwicHJldmlvdXNBbnN3ZXJzTGluZSIsInByZXZpb3VzQW5zd2Vyc1N0YXRzIiwicHJldmlvdXNBbnN3ZXJzVGl0bGUiLCJyZXNwb25zZVNhdmVkRXJyb3IiLCJyZXNwb25zZVNhdmVkTWVzc2FnZSIsInN0YXRzVXNlciIsIndhbnRUb1NhdmVSZXNwb25zZXMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsIlRvb2wiLCJpc0VtcHR5IiwibXlWYXIiLCJ1bmRlZmluZWQiLCJ0cmltIiwidHJpbUlmTm90TnVsbCIsIm15U3RyaW5nIiwic2hvcnRlbklmTG9uZ2VyVGhhbiIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsInJlcGxhY2VBbGwiLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJnZXRSYW5kb21JbnQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZUZvcm1hdCIsImRhdGVTdHJpbmciLCJsYW5nIiwibXlEYXRlIiwiRGF0ZSIsIm15RGF5IiwiZ2V0RGF0ZSIsIm15TW91bnRoIiwiZ2V0TW9udGgiLCJteVllYXIiLCJnZXRGdWxsWWVhciIsImdldFBhc3N3b3JkIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsInVzZXJzR2V0Q29uZmlnVXJsIiwiY29uZmlnVGVtcGxhdGUiLCJteUZvcm0iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGl2UmVzcG9uc2UiLCJidG5TaG93IiwiYnRuU3VibWl0IiwiZXhwbGFuYXRpb25zVGl0bGUiLCJleHBsYW5hdGlvbnNDb250ZW50IiwiaXNDb25uZWN0ZWQiLCJ1c2VyIiwiaW5pdGlhbGlzZSIsInN0eWxlIiwiZGlzcGxheSIsImNoZWNrU2Vzc2lvbiIsImdldExvY2FseSIsInVwZGF0ZUFjY291bnRMaW5rIiwic3RhdHVzIiwiY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyIsImxvYWRNYXRvbW8iLCJlIiwiY29uc29sZSIsImVycm9yIiwiaGVsbG9EZXYiLCJzaG93UXVlc3Rpb25uYWlyZSIsImNocm9ub0JlZ2luIiwibm93IiwiaGVyZSIsIndpbmRvdyIsImxvY2F0aW9uIiwiaGFzaCIsImFzc2lnbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwcmV2ZW50RGVmYXVsdCIsImFkZEVsZW1lbnQiLCJhbnN3ZXIiLCJpbm5lckhUTUwiLCJ1c2VyUmVzcG9uc2VzIiwiZ2V0RGF0YXNGcm9tSW5wdXRzIiwiZHVyYXRpb24iLCJyb3VuZCIsIm5iUXVlc3Rpb25zIiwibmJDb3JyZWN0QW5zd2VycyIsIlF1ZXN0aW9ubmFpcmVJZCIsImlkQ2hvaWNlIiwiaWRRdWVzdGlvbiIsImdvb2RSZXNwb25zZSIsIml0ZW0iLCJzdGFydHNXaXRoIiwibGFzdEluZGV4T2YiLCJwYXJlbnROb2RlIiwiY2xhc3NMaXN0IiwiYWRkIiwiZ2V0T3VwdXQiLCJjaGVja0Fuc3dlck91cHV0IiwieGhyU2F2ZUFuc3dlciIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJET05FIiwieGhyUmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJtZXNzYWdlIiwic2V0UmVxdWVzdEhlYWRlciIsInRva2VuIiwidGltZURpZmZlcmVuY2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInNlbmQiLCJzdHJpbmdpZnkiLCJzYXZlQW5zd2VyIiwicXVlcnlTZWxlY3RvciIsImV4cGxhbmF0aW9ucyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ4aHJQcmV2aW91c1JlcyIsInJlc3BvbnNlIiwibmJSZXNwb25zZXMiLCJwcmV2aW91c0Fuc3dlcnNDb250ZW50IiwidG90TmJRdWVzdGlvbnMiLCJ0b3ROYkNvcnJlY3RBbnN3ZXJzIiwidG90RHVyYXRpb24iLCJtYXBMaW5lQ29udGVudCIsIkRBVEVBTlNXRVIiLCJjcmVhdGVkQXQiLCJOQkNPUlJFQ1RBTlNXRVJTIiwiTkJRVUVTVElPTlMiLCJBVkdEVVJBVElPTiIsIkFWR0NPUlJFQ1RBTlNXRVJTIiwiY29uZmlnRnJvbnRFbmQiLCJ0eHQiLCJHcm91cElkIiwic2F2ZUxvY2FseSIsInJhdGlvIiwiRFVSQVRJT04iLCJvdXRwdXQiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImRhdGFzIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImVudHJpZSIsImVudHJpZXMiLCJlbXB5Rm9ybSIsInR5cGUiLCJjaGVja2VkIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJpbnNlcnRCZWZvcmUiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ4aHIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxNQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENBQTlCOztBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FDQTtBQUNJQyxRQUFNLEVBQUUsMkJBRFo7QUFFSUMsU0FBTyxFQUFFLHVC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RCxFQUFpQm5HLE9BQWpCLEVBQTBCb0csU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUN0USwyREFBTyxDQUFDa0ssT0FBRCxDQUFYLEVBQ0k0QixvRUFBVSxDQUFDLFNBQUQsRUFBWTVCLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ2xLLDJEQUFPLENBQUNzUSxTQUFELENBQVgsRUFDSXhFLG9FQUFVLENBQUMsS0FBRCxFQUFRd0UsU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDdFEsMkRBQU8sQ0FBQ3FRLGNBQUQsQ0FBWCxFQUNJeEksTUFBTSxDQUFDQyxRQUFQLENBQWdCRSxNQUFoQixDQUF1QnFJLGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvcXVlc3Rpb25uYWlyZS5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9xdWVzdGlvbm5haXJlLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvYW5zd2VyXCI6IFwiLi4vbGFuZy9mci9hbnN3ZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9hbnN3ZXIkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL2dlbmVyYWxcIjogXCIuLi9sYW5nL2ZyL2dlbmVyYWwuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC9nZW5lcmFsJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBjaGVja1Jlc3BvbnNlc091cHV0RmFpbCA6IFwiVm91cyBhdmV6IHLDqXBvbmR1IGVuIERVUkFUSU9OIHNlY29uZGVzIGV0IGF2ZXogPHU+PGI+TkJDT1JSRUNUQU5TV0VSUyBib25uZShzKSByw6lwb25zZShzKSBzdXIgTkJRVUVTVElPTlMgcXVlc3Rpb25zPC9iPjwvdT4uIEMnZXN0IGNlcnRhaW4sIHZvdXMgZmVyZXogbWlldXggbGEgcHJvY2hhaW5lIGZvaXMgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRNZWRpdW0gOiBcIlZvdXMgYXZleiByw6lwb25kdSBlbiBEVVJBVElPTiBzZWNvbmRlcyBldCBhdmV6IDx1PjxiPk5CQ09SUkVDVEFOU1dFUlMgYm9ubmUocykgcsOpcG9uc2Uocykgc3VyIE5CUVVFU1RJT05TIHF1ZXN0aW9uczwvYj48L3U+LiBDJ2VzdCBwYXMgbWFsIGR1IHRvdXQgIVwiLFxuICAgIGNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzIDogXCJWb3VzIGF2ZXogcsOpcG9uZHUgZW4gRFVSQVRJT04gc2Vjb25kZXMgZXQgYXZleiA8dT48Yj5OQkNPUlJFQ1RBTlNXRVJTIGJvbm5lKHMpIHLDqXBvbnNlKHMpIHN1ciBOQlFVRVNUSU9OUyBxdWVzdGlvbnM8L2I+PC91Pi4gQnJhdm8gISBSaWVuIG5lIHZvdXMgw6ljaGFwcGUgIVwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRJbnRlZ2VyTnVtYmVyU2Vjb25kZXNSZXNwb25zZSA6IFwiTGEgZHVyw6llIGRlIGxhIHLDqXBvbnNlIGRvaXQgw6p0cmUgdW4gbm9tYnJlIGVudGllciBkZSBzZWNvbmRlcy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSB1biBub21icmUgZW50aWVyLlwiLFxuICAgIG5lZWRNYXhOdW1iZXJVc2VyUmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcXVlc3Rpb25zIGF1eHF1ZWxsZXMgbCd1dGlsaXNhdGV1ciBhIHLDqXBvbmR1IG5lIHBldXQgw6p0cmUgYXVzc2kgw6lsZXbDqS5cIixcbiAgICBuZWVkTWluTnVtYmVyVXNlclJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHF1ZXN0aW9ucyBhdXhxdWVsbGVzIGwndXRpbGlzYXRldXIgYSByw6lwb25kdSBuZSBwZXV0IMOqdHJlIGluZsOpcmlldXIgw6AgMS5cIixcbiAgICBuZWVkTnVtYmVyQ29ycmVjdFJlc3BvbnNlcyA6IFwiTGUgbm9tYnJlIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE51bWJlclVzZXJSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYXV4cXVlbGxlcyBsJ3V0aWxpc2F0ZXVyIGEgcsOpcG9uZHUgZG9pdCDDqnRyZSBmb3VybmkuXCIsXG4gICAgbmVlZE1heE51bWJlckNvcnJlY3RSZXNwb25zZXMgOiBcIkxlIG5vbWJyZSBkZSByw6lwb25zZXMgY29ycmVjdGVzIG5lIHBldXQgw6p0cmUgc3Vww6lyaWV1ciBhdSBub21icmUgZGUgcXVlc3Rpb25zLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJDb3JyZWN0UmVzcG9uc2VzIDogXCJMZSBub21icmUgZGUgcsOpcG9uc2VzIGNvcnJlY3RlcyBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmLlwiLFxuICAgIG5lZWRNaW5OdW1iZXJTZWNvbmRlc1Jlc3BvbnNlIDogXCJMYSBkdXLDqWUgZGUgbGEgcsOpcG9uc2UgbmUgcGV1dCDDqnRyZSBuw6lnYXRpdmUuXCIsXG4gICAgbm9QcmV2aW91c0Fuc3dlcjogXCJPbiBkaXJhaXQgcXVlIGMnZXN0IGxhIHByZW1pw6hyZSBmb2lzIHF1ZSB2b3VzIHLDqXBvbmRleiDDoCBjZSBxdWl6LiBCb25uZSBsZWN0dXJlICFcIixcbiAgICBwcmV2aW91c0Fuc3dlcnNMaW5lOiBcIkxlIERBVEVBTlNXRVIsIHZvdXMgYXZleiByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgTkJDT1JSRUNUQU5TV0VSUyBxdWVzdGlvbnMgc3VyIE5CUVVFU1RJT05TIGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1N0YXRzOiBcIkVuIG1veWVubmUsIHZvdXMgYXZleiByw6lwb25kdSDDoCBjZSBxdWl6IGVuIEFWR0RVUkFUSU9OIHNlY29uZGVzLCBlbiBheWFudCA8Yj5BVkdDT1JSRUNUQU5TV0VSUyAlIGRlIGJvbm5lcyByw6lwb25zZXM8L2I+LlwiLFxuICAgIHByZXZpb3VzQW5zd2Vyc1RpdGxlOiBcIkJvbmpvdXIgI05PTSwgdm9pY2kgdm9zIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIMOgIGNlIHF1aXpcIixcbiAgICByZXNwb25zZVNhdmVkRXJyb3IgOiBcIkNlcGVuZGFudCB1bmUgZXJyZXVyIGEgw6l0w6kgcmVuY29udHLDqWUgZHVyYW50IGwnZW5yZWdpc3RyZW1lbnQgZGUgdm90cmUgcsOpc3VsdGF0LiA8YSBocmVmPScvI1VSTCc+QWNjw6hkZXIgw6AgdG91cyB2b3MgcXVpenM8L2E+LlwiLFxuICAgIHJlc3BvbnNlU2F2ZWRNZXNzYWdlIDogXCJWb3RyZSByw6lzdWx0YXQgYSDDqXTDqSBlbnJlZ2lzdHLDqS4gPGEgaHJlZj0nLyNVUkwnPkFjY8OoZGVyIMOgIHRvdXMgdm9zIHF1aXpzPC9hPi5cIixcbiAgICBzdGF0c1VzZXI6IFwiVm91cyBhdmV6IGVucmVnaXN0csOpIDxiPk5CQU5TV0VSUyByw6lwb25zZVMxIMOgIE5CUVVFU1RJT05OQUlSRVMgcXVpelMyIGRpZmbDqXJlbnRTMzwvYj4gc3VyIGxlcyBOQlRPVFFVRVNUSU9OTkFJUkVTIHByb3Bvc8OpUzQgcGFyIGxlIHNpdGUuPGJyPkVuIG1veWVubmUsIHZvdXMgYXZleiBtaXMgQVZHRFVSQVRJT04gc2Vjb25kZXMgw6AgcsOpcG9uZHJlIGV0IGF2ZXogPGI+Y29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIEFWR0NPUlJFQ1RBTlNXRVJTICUgZGVzIHF1ZXN0aW9uczwvYj4uXCIsXG4gICAgd2FudFRvU2F2ZVJlc3BvbnNlczogXCJTaSB2b3VzIGxlIHNvdWhhaXRleiwgdm91cyBwb3V2ZXogPHU+PGI+c2F1dmVnYXJkZXIgdm90cmUgcsOpc3VsdGF0PC9iPjwvdT4gZW4gY3LDqWFudCB2b3RyZSBjb21wdGUgY2ktZGVzc291cy4gQ2VsYSB2b3VzIHBlcm1ldHRyYSBhdXNzaSBkZSA8dT48Yj5yZWNldm9pciByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIFxcXCJncmFpbmVzIGRlIGN1bHR1cmVcXFwiPC9iPjwvdT4gZGlyZWN0ZW1lbnQgc3VyIHZvdHJlIGUtbWFpbC5cIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIMOgIHN1cHByaW1lciB1bmUgZm9pcyBxdWUgdG91dCByw6ljdXDDqXJlciBkdSBiYWNrZW5kIDpcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybCA6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHVzZXJzR2V0Q29uZmlnVXJsIDogXCIvdXNlci9nZXRjb25maWdcIixcbiAgICBsYW5nIDogXCJmclwiLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiXG59OyIsIi8vIC0tIEdFU1RJT04gRFUgRk9STVVMQUlSRSBQRVJNRVRUQU5UIEQnQUZGSUNIRVIgRVQgUsOJUE9ORFJFIMOAIFVOIFFVSVpcblxuLy8vIElsIG4nZXN0IHBhcyBuw6ljZXNzYWlyZSBkJ8OqdHJlIGNvbm5lY3TDqSBwb3VyIHLDqXBvbmRyZSBhdSBxdWl6IGV0IHZvaXIgc29uIHLDqXN1bHRhdC5cbi8vLyBNYWlzIHNpIHBhcyBjb25uZWN0w6ksIG9uIHByb3Bvc2Ugw6AgbCdpbnRlcm5hdXRlIGRlIHNlIGNvbm5lY3RlciBvdSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgc2F1dmVnYXJkZXIgc29uIHLDqXN1bHRhdC5cbi8vLyBEYW5zIGNlIGJ1dCBzb24gcsOpc3VsdGF0IGVzdCBzdG9ja8OpIGRhbnMgc29uIG5hdmlnYXRldXIuXG4vLy8gU2kgaWwgZXN0IGNvbm5lY3TDqSwgbCdlbnJlZ2lzdHJlbWVudCBkZSBzb24gcsOpc3VsdGF0IHNlIGZhaXQgYXV0b21hdGlxdWVtZW50IGPDtHTDqSBzZXJ2ZXVyIGV0IHNlcyDDqXZlbnR1ZWxzIHByw6ljw6lkZW50cyByw6lzdWx0YXRzIHNvbnQgYWZmaWNow6lzLlxuXG4vLyBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gdGlyw6lzIGR1IGJhY2tlbmQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNBbnN3ZXJzLCBxdWVzdGlvbm5haXJlUm91dGVzLCBzYXZlQW5zd2Vyc1JvdXRlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9xdWVzdGlvbm5haXJlcy5qc1wiO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7IGNoZWNrQW5zd2VyT3VwdXQsIHNhdmVBbnN3ZXIgfSBmcm9tIFwiLi90b29scy9hbnN3ZXJzLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiwgdXBkYXRlQWNjb3VudExpbmsgfSBmcm9tIFwiLi90b29scy9ldmVyeXdoZXJlLmpzXCI7XG5pbXBvcnQgeyBnZXRMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBnZXREYXRhc0Zyb21JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgZGF0ZUZvcm1hdCwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi90b29scy9tYWluXCI7XG5pbXBvcnQgeyBsb2FkTWF0b21vIH0gZnJvbSBcIi4vdG9vbHMvbWF0b21vLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24sIGdldFRpbWVEaWZmZXJlbmNlIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IG5vUHJldmlvdXNBbnN3ZXIsIHByZXZpb3VzQW5zd2Vyc0xpbmUsIHByZXZpb3VzQW5zd2Vyc1N0YXRzLCBwcmV2aW91c0Fuc3dlcnNUaXRsZSwgcmVzcG9uc2VTYXZlZEVycm9yLCB3YW50VG9TYXZlUmVzcG9uc2VzIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2Fuc3dlclwiKTtcbmNvbnN0IHsgc2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvZ2VuZXJhbFwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IG15Rm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVlc3Rpb25uYWlyZVwiKTtcbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGJ0blNob3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3dRdWVzdGlvbm5haXJlXCIpO1xuY29uc3QgYnRuU3VibWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjaGVja1Jlc3BvbnNlc1wiKTtcbmNvbnN0IGV4cGxhbmF0aW9uc1RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJleHBsYW5hdGlvbnNUaXRsZVwiKTtcbmNvbnN0IGV4cGxhbmF0aW9uc0NvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4cGxhbmF0aW9uc0NvbnRlbnRcIik7XG5cbmxldCBpc0Nvbm5lY3RlZCwgdXNlcjtcbmNvbnN0IGluaXRpYWxpc2UgPSBhc3luYyAoKSA9Plxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgYnRuU2hvdy5zdHlsZS5kaXNwbGF5PVwiaW5saW5lXCI7Ly8gYm91dG9uIGNhY2jDqSBzaSBKUyBpbmFjdGlmLCBjYXIgSlMgbsOpY2Vzc2FpcmUgcG91ciB2w6lyaWZpZXIgbGVzIHLDqXBvbnNlc1xuICAgICAgICBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oW1widXNlclwiXSk7Ly8gXCJ1c2VyXCIgY2FyIHNldWxzIGxlcyB1dGlsaXNhdGV1cnMgZGUgYmFzZSBwZXV2ZW50IGVucmVnaXN0cmVyIGxldXJzIHLDqXBvbnNlcyBhdXggcXVpenNcbiAgICAgICAgLy8gU2kgbCd1dGlsaXNhdGV1ciBlc3QgY29ubmVjdMOpIGV0IGEgZMOpasOgIHLDqXBvbmR1IMOgIGNlIHF1aXosIG9uIGFmZmljaGUgc2VzIHByw6ljw6lkZW50ZXMgcsOpcG9uc2VzIMOgIGxhIHBsYWNlIGR1IHRleHRlIHNlcnZhbnQgw6AgZXhwbGlxdWVyIGxlIHRvcG8gYXV4IG5vdXZlYXV4XG4gICAgICAgIGlmKGlzQ29ubmVjdGVkKVxuICAgICAgICB7XG4gICAgICAgICAgICB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpOy8vIGxpZW4gdmVycyBsZSBjb21wdGUgYWRhcHTDqSBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgY29ubmVjdMOpc1xuICAgICAgICAgICAgY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb2FkTWF0b21vKCk7XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTtcbmhlbGxvRGV2KCk7XG5cbi8vIEFmZmljaGFnZSBkdSBxdWVzdGlvbm5haXJlIHF1YW5kIGwndXRpbGlzYXRldXIgY2xpcXVlIHN1ciBsZSBib3V0b24gb3Ugc2kgbCdpZCBkdSBmb3JtdWxhaXJlIGVzdCBwYXNzw6llIHBhciBsJ3VybC5cbi8vIETDqWNsZW5jaGUgZW4gbcOqbWUgdGVtcHMgbGUgY2hyb25vbcOodHJlIG1lc3VyYW50IGxhIGR1csOpZSBkZSBsYSByw6lwb25zZSBhdXggcXVlc3Rpb25zLlxuY29uc3Qgc2hvd1F1ZXN0aW9ubmFpcmUgPSAoKSA9Plxue1xuICAgIGNocm9ub0JlZ2luPURhdGUubm93KCk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgIGJ0blNob3cuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICBjb25zdCBoZXJlPXdpbmRvdy5sb2NhdGlvbjsvLyB3aW5kb3cubG9jYXRpb24gw6AgYWpvdXRlciBwb3VyIG5lIHBhcyBxdWl0dGVyIGxhIHBhZ2UgZW4gbW9kZSBcInByZXZpZXdcIi5cbiAgICBpZih3aW5kb3cubG9jYXRpb24uaGFzaCE9PVwiXCIpXG4gICAge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiOy8vICEgbGUgXCIjXCIgcmVzdGVcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihoZXJlK1wicXVlc3Rpb25uYWlyZVwiKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGhlcmUrXCIjcXVlc3Rpb25uYWlyZVwiKTtcbn1cbmxldCBjaHJvbm9CZWdpbj0wO1xuYnRuU2hvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2hvd1F1ZXN0aW9ubmFpcmUoKTtcbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn0pO1xuLy8gTGllbiBwYXNzw6kgcGFyIG1haWwgcG91ciB2b2lyIGRpcmVjdGVtZW50IGxlIHF1aXpcbmlmKGxvY2F0aW9uLmhhc2ghPVwiXCIgJiYgbG9jYXRpb24uaGFzaD09PVwiI3F1ZXN0aW9ubmFpcmVcIilcbiAgICBzaG93UXVlc3Rpb25uYWlyZSgpO1xuXG4vLyBUcmFpdGVtZW50IGRlIGwnZW52b2kgZGUgbGEgcsOpcG9uc2UgZGUgbCd1dGlsaXNhdGV1ciA6XG5sZXQgYW5zd2VyID0ge307XG5teUZvcm0uYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCBmdW5jdGlvbihlKVxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAgICAgICBcbiAgICAgICAgYnRuU3VibWl0LnN0eWxlLmRpc3BsYXk9XCJub25lXCI7Ly8gc2V1bGVtZW50IHVuIGVudm9pIMOgIGxhIGZvaXMsIFNWUCA6KVxuICAgICAgICBkaXZSZXNwb25zZS5pbm5lckhUTUw9XCJcIjsvLyBzdXBwcmltZSBsZXMgw6l2ZW50dWVscyBtZXNzYWdlcyBkw6lqw6AgYWZmaWNow6lzXG4gICAgICAgIGNvbnN0IHVzZXJSZXNwb25zZXM9Z2V0RGF0YXNGcm9tSW5wdXRzKG15Rm9ybSk7XG4gICAgICAgIGFuc3dlci5kdXJhdGlvbj1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWNocm9ub0JlZ2luKS8xMDAwKTtcbiAgICAgICAgYW5zd2VyLm5iUXVlc3Rpb25zPTA7XG4gICAgICAgIGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzPTA7XG4gICAgICAgIGFuc3dlci5RdWVzdGlvbm5haXJlSWQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWVzdGlvbm5haXJlSWRcIikudmFsdWU7XG4gICAgICAgIC8vIExlcyByw6lwb25zZXMgc29udCByZWdyb3Vww6llcyBwYXIgcXVlc3Rpb24sIGRvbmMgcXVhbmQgaWRRdWVzdGlvbiBjaGFuZ2UsIG9uIGNvbm5hw650IGxlIHLDqXN1bHRhdCBwb3VyIGxhIHF1ZXN0aW9uIHByw6ljw6lkZW50ZS5cbiAgICAgICAgLy8gUG91ciBxdSd1bmUgcsOpcG9uc2Ugc29pdCBib25uZSwgaWwgZmF1dCBjb2NoZXIgdG91dGVzIGxlcyBib25uZXMgcsOpcG9uc2VzIChzaSBRQ00pIMOgIGxhIHF1ZXN0aW9uIEVUIGNvY2hlciBhdWN1bmUgZGVzIG1hdXZhaXNlcy5cbiAgICAgICAgbGV0IGlkQ2hvaWNlLCBpZFF1ZXN0aW9uPVwiXCIsIGdvb2RSZXNwb25zZT1mYWxzZTtcbiAgICAgICAgZm9yKGxldCBpdGVtIGluIHVzZXJSZXNwb25zZXMpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uc3RhcnRzV2l0aChcImlzQ29ycmVjdF9yZXNwb25zZV9cIikpLy8gPSBOb3V2ZWxsZSByw6lwb25zZSBwb3NzaWJsZS5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZENob2ljZSA9IGl0ZW0uc3Vic3RyaW5nKGl0ZW0ubGFzdEluZGV4T2YoXCJfXCIpICsgMSk7XG4gICAgICAgICAgICAgICAgLy8gc2kgb24gY2hhbmdlIGRlIHF1ZXN0b25cbiAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicXVlc3Rpb25faWRfcmVzcG9uc2VfXCIraWRDaG9pY2VdIT1pZFF1ZXN0aW9uKSAvLyBvbiBjb21tZW5jZSDDoCB0cmFpdGVyIHVuZSBub3V2ZWxsZSBxdWVzdGlvblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWRRdWVzdGlvbj11c2VyUmVzcG9uc2VzW1wicXVlc3Rpb25faWRfcmVzcG9uc2VfXCIraWRDaG9pY2VdO1xuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIubmJRdWVzdGlvbnMrKztcbiAgICAgICAgICAgICAgICAgICAgaWYoZ29vZFJlc3BvbnNlKSAvLyByw6lzdWx0YXQgZGUgbGEgcXVlc3Rpb24gcHLDqWPDqWRlbnRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXIubmJDb3JyZWN0QW5zd2VycysrO1xuICAgICAgICAgICAgICAgICAgICBnb29kUmVzcG9uc2U9dHJ1ZTsvLyByw6lwb25zZSBib25uZSBqdXNxdSfDoCBsYSBwcmVtacOocmUgZXJyZXVyLi4uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbaXRlbV09PVwidHJ1ZVwiKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZV9cIitpZENob2ljZSkucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKFwiaXNDb3JyZWN0XCIpO1xuICAgICAgICAgICAgICAgICAgICBpZih1c2VyUmVzcG9uc2VzW1wicmVzcG9uc2VfXCIraWRDaG9pY2VdPT09dW5kZWZpbmVkKS8vIHVuZSBib25uZSByw6lwb25zZSBuJ2EgcGFzIMOpdMOpIHPDqWxlY3Rpb25uw6llXG4gICAgICAgICAgICAgICAgICAgICAgICBnb29kUmVzcG9uc2U9ZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHVzZXJSZXNwb25zZXNbXCJyZXNwb25zZV9cIitpZENob2ljZV09PT1cIm9uXCIpLy8gcsOpcG9uc2UgY29jaMOpZSBuZSBmYWlzYW50IHBhcyBwYXJ0aWUgZGVzIGJvbm5lc1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnb29kUmVzcG9uc2U9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlc3BvbnNlX1wiK2lkQ2hvaWNlKS5wYXJlbnROb2RlLmNsYXNzTGlzdC5hZGQoXCJpc05vdENvcnJlY3RcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2kgaidhaSBiaWVuIHLDqXBvbmR1IMOgIGxhIGRlcm5pw6hyZSBxdWVzdGlvbiwgaWwgZmF1dCBsZSBjb21wdGVyIGljaSwgY2FyIGplIHN1aXMgc29ydGkgZGUgbGEgYm91Y2xlIDpcbiAgICAgICAgaWYoZ29vZFJlc3BvbnNlKVxuICAgICAgICAgICAgYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMrKztcblxuICAgICAgICAvLyBBZmZpY2hhZ2UgZHUgcsOpc3VsdGF0LCBzdWl2YW50IHNpIGwndXRpbGlzYXRldXIgZXN0IGNvbm5lY3TDqSBvdSBwYXMgZXQgc29uIHNjb3JlIDpcbiAgICAgICAgbGV0IGdldE91cHV0PWNoZWNrQW5zd2VyT3VwdXQoYW5zd2VyKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgZXN0IGNvbm5lY3TDqSwgb24gZW5yZWdpc3RyZSBzb24gcsOpc3VsdGF0IHN1ciBsZSBzZXJ2ZXVyLlxuICAgICAgICAgICAgY29uc3QgeGhyU2F2ZUFuc3dlciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrcXVlc3Rpb25uYWlyZVJvdXRlcytzYXZlQW5zd2Vyc1JvdXRlKTtcbiAgICAgICAgICAgIHhoclNhdmVBbnN3ZXIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB4aHJSZXNwb25zZT1KU09OLnBhcnNlKHRoaXMucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEgJiYgKHhoclJlc3BvbnNlLm1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXB1dCs9XCI8YnI+XCIreGhyUmVzcG9uc2UubWVzc2FnZS5yZXBsYWNlKFwiI1VSTFwiLCBjb25maWdUZW1wbGF0ZS51c2VySG9tZVBhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tQcmV2aW91c1Jlc3BvbnNlcyh1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXB1dCs9XCI8YnI+XCIrcmVzcG9uc2VTYXZlZEVycm9yLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIHJlZGlyaWdlIHZlcnMgbGUgcsOpc3VsdGF0XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPVwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlcmU9d2luZG93LmxvY2F0aW9uOy8vIHdpbmRvdy5sb2NhdGlvbiDDoCBham91dGVyIHBvdXIgbmUgcGFzIHF1aXR0ZXIgbGEgcGFnZSBlbiBtb2RlIFwicHJldmlld1wiLi4uXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oaGVyZStcImV4cGxhbmF0aW9uc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLnNldFJlcXVlc3RIZWFkZXIoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiK3VzZXIudG9rZW4pO1xuICAgICAgICAgICAgeGhyU2F2ZUFuc3dlci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgIGFuc3dlci50aW1lRGlmZmVyZW5jZT1nZXRUaW1lRGlmZmVyZW5jZSgpOy8vIG9uIGVuIHByb2ZpdGUgcG91ciBtZXR0cmUgbGVzIHBlbmR1bGVzIMOgIGwnaGV1cmUuXG4gICAgICAgICAgICB4aHJTYXZlQW5zd2VyLnNlbmQoSlNPTi5zdHJpbmdpZnkoYW5zd2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7ICAgLy8gc2kgcGFzIGNvbm5lY3TDqSwgb24gZW5yZWdpc3RyZSBsZSByw6lzdWx0YXQgY8O0dMOpIGNsaWVudCBwb3VyIHBlcm1ldHRyZSBkZSBsZSByZXRyb3V2ZXIgYXUgbW9tZW50IGRlIGxhIGNyw6lhdGlvbiBkdSBjb21wdGUgb3UgZGUgbGEgY29ubmV4aW9uLlxuICAgICAgICAgICAgaWYoc2F2ZUFuc3dlcihhbnN3ZXIpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBnZXRPdXB1dCs9XCI8YnI+PGJyPlwiK3dhbnRUb1NhdmVSZXNwb25zZXM7XG4gICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBnZXRPdXB1dCwgXCJcIiwgW1wiaW5mb1wiXSk7XG4gICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc3Vic2NyaWJlQnRuc1wiKS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgLy8gaW51dGlsZSBkZSBwcm9wb3NlciBkZSBjcsOpZXIgdW4gY29tcHRlIHNpIGxlIHN0b2NrYWdlIGxvY2FsIG5lIGZvbmN0aW9ubmUgcGFzXG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIGdldE91cHV0LCBcIlwiLCBbXCJpbmZvXCJdKTtcbiAgICAgICAgICAgIC8vIG9uIHJlZGlyaWdlIHZlcnMgbGUgcsOpc3VsdGF0XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD1cIlwiO1xuICAgICAgICAgICAgY29uc3QgaGVyZT13aW5kb3cubG9jYXRpb247Ly8gd2luZG93LmxvY2F0aW9uIMOgIGFqb3V0ZXIgcG91ciBuZSBwYXMgcXVpdHRlciBsYSBwYWdlIGVuIG1vZGUgXCJwcmV2aWV3XCIuLi5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oaGVyZStcInJlc3BvbnNlXCIpOyAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLy8gKyBhZmZpY2hhZ2UgZGVzIHRleHRlcyBkJ2V4cGxpY2F0aW9ucyBwb3VyIGNoYXF1ZSBxdWVzdGlvblxuICAgICAgICBjb25zdCBleHBsYW5hdGlvbnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5oZWxwXCIpO1xuICAgICAgICBmb3IobGV0IGkgaW4gZXhwbGFuYXRpb25zKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZihleHBsYW5hdGlvbnNbaV0uc3R5bGUhPXVuZGVmaW5lZCkgLy8gc2lub24sIGxhIGNvbnNvbGUgYWZmaWNoZSB1bmUgZXJyZXVyIFwiVHlwZUVycm9yOiBleHBsYW5hdGlvbnNbaV0uc3R5bGUgaXMgdW5kZWZpbmVkXCIsIGJpZW4gcXVlIHRvdXQgZm9uY3Rpb25uZSAoPylcbiAgICAgICAgICAgICAgICBleHBsYW5hdGlvbnNbaV0uc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbn0pXG5cbi8vIEZvbmN0aW9uIHbDqXJpZmlhbnQgbGVzIHByw6ljw6lkZW50ZXMgcsOpcG9uc2VzIGRlIGwndXRpbGlzYXRldXJcbi8vIFV0aWxlIHNpIGNvbm5lY3TDqSBsb3JzIGR1IHByZW1pZXIgY2hhcmdlbWVudCBkZSBsYSBwYWdlLCBwdWlzIGFwcsOocyB1bmUgbm91dmVsbGUgcsOpcG9uc2VcbmNvbnN0IGNoZWNrUHJldmlvdXNSZXNwb25zZXMgPSAodXNlcikgPT5cbntcbiAgICBjb25zdCB4aHJQcmV2aW91c1JlcyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHhoclByZXZpb3VzUmVzLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3F1ZXN0aW9ubmFpcmVSb3V0ZXMrZ2V0UHJldmlvdXNBbnN3ZXJzK3VzZXIuaWQrXCIvXCIrZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWVzdGlvbm5haXJlSWRcIikudmFsdWUpO1xuICAgIHhoclByZXZpb3VzUmVzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmJSZXNwb25zZXM9cmVzcG9uc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Fuc3dlcnNDb250ZW50PVwiXCI7XG4gICAgICAgICAgICAgICAgYWRkRWxlbWVudChleHBsYW5hdGlvbnNUaXRsZSwgXCJzcGFuXCIsIHByZXZpb3VzQW5zd2Vyc1RpdGxlLnJlcGxhY2UoXCIjTk9NXCIsIHVzZXIubmFtZSkpO1xuICAgICAgICAgICAgICAgIGlmKG5iUmVzcG9uc2VzIT09MClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3ROYlF1ZXN0aW9ucz0wLCB0b3ROYkNvcnJlY3RBbnN3ZXJzPTAsIHRvdER1cmF0aW9uPTAsIG1hcExpbmVDb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgaW4gcmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdE5iUXVlc3Rpb25zKz1yZXNwb25zZVtpXS5uYlF1ZXN0aW9uczsvLyAhIG9uIG5lIHBldXQgc2UgYmFzZXIgc3VyIGxhIHZlcnNpb24gYWN0dWVsbGUgZHUgcXVpeiwgY2FyIGxlIG5vbWJyZSBkZSBxdWVzdGlvbnMgYSBwdSDDqXZvbHVlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdE5iQ29ycmVjdEFuc3dlcnMrPXJlc3BvbnNlW2ldLm5iQ29ycmVjdEFuc3dlcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3REdXJhdGlvbis9cmVzcG9uc2VbaV0uZHVyYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5lQ29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURUFOU1dFUiA6IGRhdGVGb3JtYXQocmVzcG9uc2VbaV0uY3JlYXRlZEF0LCBsYW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQkNPUlJFQ1RBTlNXRVJTIDogcmVzcG9uc2VbaV0ubmJDb3JyZWN0QW5zd2VycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQlFVRVNUSU9OUyA6IHJlc3BvbnNlW2ldLm5iUXVlc3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWR0RVUkFUSU9OIDogcmVzcG9uc2VbaV0uZHVyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Fuc3dlcnNDb250ZW50Kz1cIjxsaT5cIityZXBsYWNlQWxsKHByZXZpb3VzQW5zd2Vyc0xpbmUsIG1hcExpbmVDb250ZW50KStcIjwvbGk+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbWFwTGluZUNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBBVkdEVVJBVElPTiA6IE1hdGgucm91bmQodG90RHVyYXRpb24vbmJSZXNwb25zZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVZHQ09SUkVDVEFOU1dFUlMgOiBNYXRoLnJvdW5kKHRvdE5iQ29ycmVjdEFuc3dlcnMvdG90TmJRdWVzdGlvbnMqMTAwKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Fuc3dlcnNDb250ZW50PVwiPGg1PlwiK3JlcGxhY2VBbGwocHJldmlvdXNBbnN3ZXJzU3RhdHMsIG1hcExpbmVDb250ZW50KStcIjwvaDU+XCIrcHJldmlvdXNBbnN3ZXJzQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChleHBsYW5hdGlvbnNDb250ZW50LCBcInVsXCIsIHByZXZpb3VzQW5zd2Vyc0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJ1bFwiLCBub1ByZXZpb3VzQW5zd2VyKTtcbiAgICAgICAgICAgICAgICAvLyBkYW5zIHVuIGNhcyBjb21tZSBkYW5zIGwnYXV0cmUsIGJvdXRvbiBwb3VyIHJldmVuaXIgw6AgbCdhY2N1ZWlsIGR1IGNvbXB0ZVxuICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZXhwbGFuYXRpb25zQ29udGVudCwgXCJwXCIsIFwiPGEgaHJlZj1cXFwiL1wiK2NvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZStcIlxcXCIgY2xhc3M9XFxcImJ1dHRvbiBjYXJkYm9hcmRcXFwiPlwiK2NvbmZpZ1RlbXBsYXRlLnVzZXJIb21lUGFnZVR4dCtcIjwvYT5cIiwgXCJcIiwgW1wiYnRuXCJdLCBcIlwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgeGhyUHJldmlvdXNSZXMuc2V0UmVxdWVzdEhlYWRlcihcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIrdXNlci50b2tlbik7XG4gICAgeGhyUHJldmlvdXNSZXMuc2VuZCgpO1xufSIsImNvbnN0IGNvbmZpZ0Zyb250RW5kID0gcmVxdWlyZShcIi4uL2NvbmZpZy9nZW5lcmFsXCIpO1xuXG5pbXBvcnQgeyBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgaXNFbXB0eSwgcmVwbGFjZUFsbCB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbmNvbnN0IHR4dCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9sYW5nL1wiK2NvbmZpZ0Zyb250RW5kLmxhbmcrXCIvYW5zd2VyXCIpO1xuXG4vLyBFbnJlZ2lzdHJlbWVudCBjw7R0w6kgY2xpZW50IGR1IGRlcm5pZXIgcsOpc3VsdGF0IMOgIHVuIHF1aXogZW4gYXR0ZW5kYW50IGQnw6p0cmUgY29ubmVjdMOpXG5leHBvcnQgY29uc3Qgc2F2ZUFuc3dlciA9IChhbnN3ZXIpID0+XG57XG4gICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICB7XG4gICAgICAgIHNhdmVMb2NhbHkoXCJsYXN0QW5zd2VyXCIsIGFuc3dlcik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy8gUmV0b3VybmUgdW4gdGV4dGUgc3VpdmFudCBsZSBub21icmUgZGUgYm9ubmVzIHLDqXBvbnNlc1xuZXhwb3J0IGNvbnN0IGNoZWNrQW5zd2VyT3VwdXQgPSAoYW5zd2VyKSA9Plxue1xuICAgIGlmKCFpc0VtcHR5KGFuc3dlci5kdXJhdGlvbikgJiYgIWlzRW1wdHkoYW5zd2VyLm5iQ29ycmVjdEFuc3dlcnMpICYmICFpc0VtcHR5KGFuc3dlci5uYlF1ZXN0aW9ucykpXG4gICAge1xuICAgICAgICBjb25zdCByYXRpbz1hbnN3ZXIubmJDb3JyZWN0QW5zd2Vycy9hbnN3ZXIubmJRdWVzdGlvbnM7XG4gICAgICAgIGNvbnN0IG1hcE9iaj1cbiAgICAgICAge1xuICAgICAgICAgICAgRFVSQVRJT046IGFuc3dlci5kdXJhdGlvbixcbiAgICAgICAgICAgIE5CQ09SUkVDVEFOU1dFUlM6IGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzLFxuICAgICAgICAgICAgTkJRVUVTVElPTlM6IGFuc3dlci5uYlF1ZXN0aW9uc1xuICAgICAgICB9XG4gICAgICAgIGxldCBvdXRwdXQ9XCJcIjtcbiAgICAgICAgaWYocmF0aW8gPCAwLjQpXG4gICAgICAgICAgICBvdXRwdXQ9cmVwbGFjZUFsbCh0eHQuY2hlY2tSZXNwb25zZXNPdXB1dEZhaWwsIG1hcE9iaik7XG4gICAgICAgIGVsc2UgaWYocmF0aW8gPCAwLjgpXG4gICAgICAgICAgICBvdXRwdXQ9cmVwbGFjZUFsbCh0eHQuY2hlY2tSZXNwb25zZXNPdXB1dE1lZGl1bSwgbWFwT2JqKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgb3V0cHV0PXJlcGxhY2VBbGwodHh0LmNoZWNrUmVzcG9uc2VzT3VwdXRTdWNjZXNzLCBtYXBPYmopO1xuICAgICAgICBpZihvdXRwdXQpXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gXCJcIjtcbn0iLCIvLyBGT05DVElPTlMgVVRJTEVTIEFVIFNUT0NLQUdFIExPQ0FMIChTRVNTSU9OLCBDT09LSUVTLCBJTkRFWERCLCBFVEMuKVxuLy8gUmV2ZW5pciBwb3VyIGfDqXJlciBsZSBjYXMgb8O5IGxvY2FsLnN0b3JhZ2Ugbidlc3QgcGFzIGNvbm51IHBvdXIgdXRpbGlzZXIgY29va2llXG4gICAgXG5leHBvcnQgY29uc3Qgc2F2ZUxvY2FseSA9IChuYW1lLCBkYXRhKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2FseSA9IChuYW1lLCBqc29uPWZhbHNlKSA9Plxue1xuICAgIGlmKGpzb24pXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxvY2FseSA9IChuYW1lKSA9Plxue1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiBhc3NvY2lhbnQgbGVzIGF0dHJpYnV0cyBmb3VybmlzIMOgIHVuIGNoYW1wIGRlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50ID0gKGVsdFBhcmVudCwgZWx0VHlwZSwgZWx0Q29udGVudD1cIlwiLCBlbHRJZD1cIlwiLCBlbHRDbGFzcz1bXSwgZWx0QXR0cmlidXRlcz17fSwgcmVwbGFjZT10cnVlKSA9Plxue1xuICAgIGlmKGlzRW1wdHkoZWx0VHlwZSkgfHwgaXNFbXB0eShlbHRQYXJlbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsdFR5cGUpO1xuICAgICAgICBcbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0SWQpKS8vIHRlc3RlciBzaSBsJ2lkIG4nZXN0IHBhcyBkw6lqw6AgdXRpbGlzw6kgZGFucyBsZSBET00gP1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pZD1lbHRJZDtcblxuICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsdENsYXNzKSAmJiBlbHRDbGFzcy5sZW5ndGghPTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiBlbHRDbGFzcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWx0Q2xhc3NbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodHlwZW9mIGVsdEF0dHJpYnV0ZXMgPT09IFwib2JqZWN0XCIpIC8vICEhIHRvdXMgbGVzIG9iamV0cyBuZSBzb250IHBhcyBva1xuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGF0dHJpYnV0TmFtZSBpbiBlbHRBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0TmFtZSwgZWx0QXR0cmlidXRlc1thdHRyaWJ1dE5hbWVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdENvbnRlbnQpKVxuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUw9ZWx0Q29udGVudC5yZXBsYWNlKC9cXG4vZyxcIjxicj5cIik7Ly8gaW5uZXJIVE1MIHBlcm1ldCBkJ2Fqb3V0ZXIgZHUgdGV4dGUgYXlhbnQgbHVpLW3Dqm1lIGRlcyBiYWxpc2VzLCBldGMuXG4gICAgICAgICAgICBcbiAgICAgICAgaWYocmVwbGFjZSlcbiAgICAgICAgICAgIGVsdFBhcmVudC5pbm5lckhUTUw9XCJcIjtcbiAgICAgICAgZWx0UGFyZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpO1xuICAgIH0gICAgXG59IiwiLy8gQ2Ugc2NyaXB0IGZvdXJuaXQgZGVzIGZvbmN0aW9ucyB1dGlsaXPDqWVzIHN1ciB0b3V0ZXMgbGVzIHBhZ2VzIGR1IHNpdGVcblxuZXhwb3J0IGNvbnN0IGhlbGxvRGV2ID0gKCkgPT5cbntcbiAgICBjb25zb2xlLmxvZyhcIioqKiogSGVsbG8gYW1pIGTDqXZlbG9wcGV1ciA6LSlcXG5cXG5MZSBjb2RlIGRlIFdpa2lMZXJuaSBlc3QgbGlicmUgZXQgdm91cyBwb3V2ZXogbGUgdHJvdXZlciDDoCBjZXR0ZSBhZHJlc3NlIDpcXG5odHRwczovL2ZvcmdlLmNoYXByaWwub3JnL0ZhYl9CbGFiL1dpa2lMZXJuaVxcblxcblBvdXIgbGVzIHN1Z2dlc3Rpb25zIGQnYW3DqWxpb3JhdGlvbiBvdSBxdWVzdGlvbnMgOiBkZXZAd2lsaWxlcm5pLmNvbSAqKioqXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjb3VudExpbmsgPSAoc3RhdHVzLCBjb25maWdUZW1wbGF0ZSkgPT5cbntcbiAgICBjb25zdCBsaW5rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3VudEhlYWRMaW5rXCIpO1xuICAgIGNvbnN0IGhvbWVQYWdlPXN0YXR1cytcIkhvbWVQYWdlXCI7XG4gICAgbGluay5ocmVmPVwiL1wiK2NvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3Qgc2V0QXR0cmlidXRlc1RvSW5wdXRzID0gKGlucHV0c0NvbmYsIG15Rm9ybSkgPT5cbntcbiAgICBmb3IobGV0IGkgaW4gbXlGb3JtLmVsZW1lbnRzKVxuICAgIHtcbiAgICAgICAgaWYoIWlzRW1wdHkobXlGb3JtLmVsZW1lbnRzW2ldLmlkKSlcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGlkSW5wdXQ9bXlGb3JtLmVsZW1lbnRzW2ldLmlkO1xuICAgICAgICAgICAgaWYoaW5wdXRzQ29uZltpZElucHV0XSE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRIVE1MPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkSW5wdXQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGF0dHJpYnV0ZSBpbiBpbnB1dHNDb25mW2lkSW5wdXRdKVxuICAgICAgICAgICAgICAgICAgICBpbnB1dEhUTUwuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgaW5wdXRzQ29uZltpZElucHV0XVthdHRyaWJ1dGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gUsOpY3Vww6hyZSB0b3V0ZXMgbGVzIHZhbGV1cnMgZGUgY2hhbXBzIGVuIG9tZXR0YW50IGxlcyBjaGVja2JveCBub24gY29jaMOpZXMsIGV0Yy5cbmV4cG9ydCBjb25zdCBnZXREYXRhc0Zyb21JbnB1dHMgPSAobXlGb3JtKSA9Plxue1xuICAgIGNvbnN0IGRhdGFzPXt9O1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKG15Rm9ybSk7XG4gICAgZm9yKGxldCBlbnRyaWUgb2YgZm9ybURhdGEuZW50cmllcygpKVxuICAgICAgIGRhdGFzW2VudHJpZVswXV09ZW50cmllWzFdO1xuICAgIHJldHVybiBkYXRhcztcbn1cblxuLy8gVmlkZSB0b3VzIGxlcyBjaGFtcHMgZCd1biBmb3JtdWxhaXJlLCB5IGNvbXByaXMgaGlkZGVuLCBjaGVja2JveCwgZXRjLlxuLy8gUmV2b2lyIHBvdXIgbGVzIHNlbGVjdFxuZXhwb3J0IGNvbnN0IGVtcHlGb3JtID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICB7XG4gICAgICAgIGlmKG15Rm9ybS5lbGVtZW50c1tlbnRyaWVbMF1dLnR5cGU9PVwiY2hlY2tib3hcIiB8fCBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cInJhZGlvXCIpXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS5jaGVja2VkPWZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS52YWx1ZT1cIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIFZpZGUgZXQgY2FjaGUgbGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGVtcHlBbmRIaWRlRm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgZW1weUZvcm0obXlGb3JtKTtcbiAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbn0iLCJpbXBvcnQgeyBtYXRvbW8gfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL21hdG9tby5qc1wiO1xuXG4vLyBGb25jdGlvbiBjaGFyZ2VhbnQgbGUgY29kZSBtYXRvbW9cbmV4cG9ydCBjb25zdCBsb2FkTWF0b21vID0gKCkgPT5cbntcbiAgICAvLyBjaGFyZ2VtZW50IGRlIG1hdG9tb1xuICAgIHZhciBfcGFxID0gd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICAvL2Fqb3V0IGNuaWwgIDpcbiAgICBfcGFxLnB1c2goW2Z1bmN0aW9uKClcbiAgICB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbm93VHMgPSBNYXRoLnJvdW5kKG5vdy5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgICAgICAgIHZpc2l0b3JJbmZvID0gc2VsZi5nZXRWaXNpdG9ySW5mbygpO1xuICAgICAgICAgICAgdmFyIGNyZWF0ZVRzID0gcGFyc2VJbnQodmlzaXRvckluZm9bMl0pO1xuICAgICAgICAgICAgdmFyIGNvb2tpZVRpbWVvdXQgPSAzMzY5NjAwMDsgLy8gMTMgbW9pcyBlbiBzZWNvbmRlc1xuICAgICAgICAgICAgdmFyIG9yaWdpbmFsVGltZW91dCA9IGNyZWF0ZVRzICsgY29va2llVGltZW91dCAtIG5vd1RzO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZpc2l0b3JDb29raWVUaW1lb3V0KCBnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0KCkgKTtcbiAgICB9XSk7XG4gICAgLy8tLWZpbiBham91dCBjbmlsXG4gICAgX3BhcS5wdXNoKFsndHJhY2tQYWdlVmlldyddKTtcbiAgICBfcGFxLnB1c2goWydlbmFibGVMaW5rVHJhY2tpbmcnXSk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdT1tYXRvbW8udXJsO1xuICAgICAgICBfcGFxLnB1c2goWydzZXRUcmFja2VyVXJsJywgdSsnbWF0b21vLnBocCddKTtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0U2l0ZUlkJywgbWF0b21vLnNpdGVJZF0pO1xuICAgICAgICB2YXIgZD1kb2N1bWVudCwgZz1kLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLCBzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgICBnLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7IGcuYXN5bmM9dHJ1ZTsgZy5zcmM9dSsnbWF0b21vLmpzJzsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuICAgIH0pKCk7XG59IiwiaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgc2l0ZVVybCwgdGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuXG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcblxuaW1wb3J0IHsgIGNoZWNrTG9naW5Sb3V0ZSwgdGltZURpZmZlcmVuY2VNYXgsIHRpbWVEaWZmZXJlbmNlTWluLCB1c2VyUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy91c2Vycy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRMb2NhbHksIHJlbW92ZUxvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG5leHBvcnQgY29uc3QgZ2V0VGltZURpZmZlcmVuY2UgPSAoKSA9Plxue1xuICAgIC8vIG11bHRpcGxpZXIgcGFyIC0xLCBjYXIgYydlc3QgY2UgcXUnaWwgZmF1dCBcImFqb3V0ZXJcIiDDoCBsJ2hldXJlIFVUQyBwb3VyIHJldmVuaXIgZW4gaGV1cmUgbG9jYWxlIHF1aSBtJ2ludMOpcmVzc2UgZXQgbm9uIGwnaW52ZXJzZVxuICAgIGNvbnN0IHRpbWVMb2NhbD1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqLTE7XG4gICAgaWYodGltZUxvY2FsID4gdGltZURpZmZlcmVuY2VNYXggfHwgdGltZUxvY2FsIDwgdGltZURpZmZlcmVuY2VNaW4pXG4gICAgICAgIHJldHVybiAwO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRpbWVMb2NhbDtcbn1cblxuLy8gSid1dGlsaXNlIGxlIHN0b2NrYWdlIGxvY2FsIGR1IG5hdmlnYXRldXIgcG91ciBlbnJlZ2lzdHJlciBsZXMgZG9ubsOpZXMgcGVybWV0dGFudCBkZSByZWNvbm5hw650cmUgbCd1dGlsaXNhdGV1ciBwYXIgbGEgc3VpdGVcbi8vIFNldWwgbGUgc2VydmV1ciBwb3VycmEgdsOpcmlmaWVyIHF1ZSBsZXMgaWRlbnRpZmlhbnRzIHNvbnQgKHRvdWpvdXJzKSB2YWxpZGVzLlxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAodXNlcklkLCB0b2tlbiwgZHVyYXRpb25UUykgPT5cbntcbiAgICBjb25zdCBzdG9yYWdlVXNlcj1cbiAgICB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uVFNcbiAgICB9XG4gICAgc2F2ZUxvY2FseShcInVzZXJcIiwgc3RvcmFnZVVzZXIpO1xufVxuXG4vLyBWw6lyaWZpZSBxdSdpbCB5IGEgZGVzIGRvbm7DqWVzIGxvY2FsZXMgY29uY2VybmFudCBsZSByw6lzdWx0YXQgZCd1biBxdWl6IG91IGQndW4gZ3JvdXBlIGRlIHF1aXpzXG4vLyBFdCBsZXMgYWpvdXRlIGF1eCBkb25uw6llcyBlbnZvecOpZXMgcGFyIGxlcyBmb3JtdWxhaXJlcyBkJ2luc2NyaXB0aW9uL2Nvbm5leGlvbiBzaSBjJ2VzdCBsZSBjYXNcbmV4cG9ydCBjb25zdCBjaGVja0Fuc3dlckRhdGFzID0gKGRhdGFzKSA9Plxue1xuICAgIGNvbnN0IGxhc3RBbnN3ZXI9Z2V0TG9jYWx5KFwibGFzdEFuc3dlclwiKTtcbiAgICBpZighaXNFbXB0eShsYXN0QW5zd2VyKSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGFuc3dlcj1KU09OLnBhcnNlKGxhc3RBbnN3ZXIpO1xuICAgICAgICBpZighaXNFbXB0eShhbnN3ZXIuZHVyYXRpb24pICYmICFpc0VtcHR5KGFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJRdWVzdGlvbnMpICYmICghaXNFbXB0eShhbnN3ZXIuUXVlc3Rpb25uYWlyZUlkKSB8fCAhaXNFbXB0eShhbnN3ZXIuR3JvdXBJZCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBkYXRhcy5kdXJhdGlvbj1hbnN3ZXIuZHVyYXRpb247XG4gICAgICAgICAgICBkYXRhcy5uYkNvcnJlY3RBbnN3ZXJzPWFuc3dlci5uYkNvcnJlY3RBbnN3ZXJzO1xuICAgICAgICAgICAgZGF0YXMubmJRdWVzdGlvbnM9YW5zd2VyLm5iUXVlc3Rpb25zO1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkpXG4gICAgICAgICAgICAgICAgZGF0YXMuUXVlc3Rpb25uYWlyZUlkPWFuc3dlci5RdWVzdGlvbm5haXJlSWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YXMuR3JvdXBJZD1hbnN3ZXIuR3JvdXBJZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIENldHRlIGZvbmN0aW9uIHRlc3RlIGxhIGNvbm5leGlvbiBkZSBsJ3V0aWxpc2F0ZXVyIGQndW5lIHBhZ2Vcbi8vIE9uIHBldXQgZm91cm5pcyB1bmUgbGlzdGUgZGUgc3RhdHV0cyBhY2NlcHTDqXMgKHNpIHZpZGUgPSB0b3VzKSwgYWluc2kgcXUndW5lIHVybCBkZSByZWRpcmVjdGlvbiBzaSBub24gY29ubmVjdMOpLCB1biBtZXNzYWdlIGQnZXJyZXVyIMOgIGFmZmljaGVyIHN1ciBsYSBwYWdlIGRlIGRlc3RpbmF0aW9uIGV0IGwndXJsIHN1ciBsYXF1ZWxsZSByZXZlbmlyIHVuZSBmb2lzIGNvbm5lY3TDqVxuZXhwb3J0IGNvbnN0IGNoZWNrU2Vzc2lvbiA9IGFzeW5jIChzdGF0dXM9W10sIHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAge1xuICAgICAgICBjb25zdCB1c2VyRGF0YXM9Z2V0TG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgaWYoaXNFbXB0eSh1c2VyRGF0YXMpKVxuICAgICAgICB7XG4gICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXI9SlNPTi5wYXJzZSh1c2VyRGF0YXMpO1xuICAgICAgICAgICAgaWYoaXNFbXB0eSh1c2VyLmlkKSB8fMKgaXNFbXB0eSh1c2VyLnRva2VuKSB8fCBpc0VtcHR5KHVzZXIuZHVyYXRpb24pIHx8IHVzZXIuZHVyYXRpb24gPCBEYXRlLm5vdygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiR0VUXCIsIGFwaVVybCt1c2VyUm91dGVzK2NoZWNrTG9naW5Sb3V0ZSt1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICB4aHIub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZT1KU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmlzVmFsaWQgJiYgcmVzcG9uc2UuaWQgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5pZD09PXVzZXIuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lPXJlc3BvbnNlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5sYW5ndWFnZT1yZXNwb25zZS5sYW5ndWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRpbWVEaWZmZXJlbmNlPXJlc3BvbnNlLnRpbWVEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIuc3RhdHVzPXJlc3BvbnNlLnN0YXR1czsvLyBjJ2VzdCBsZSB0b2tlbiBxdWkgc2VydCDDoCB2w6lyaWZpZXIgbGUgc3RhdHV0IMOgIGNoYXF1ZSByZXF1w6p0ZSDDoCBsJ0FQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHVzZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpIGlsIHMnYWdpdCBkJ3VuIFwidXNlclwiIGV0IHF1ZSBzb24gYWJvbm5lbWVudCBhIGV4cGlyw6ksIGplIGxlIHJlZGlyaWdlIHZlcnMgbGEgY2Fpc3NlIDotKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cz09PVwidXNlclwiICYmIHJlc3BvbnNlLm5iRGF5c09rIDw9IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBY2NvdW50PXNpdGVVcmwrXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YodXJsQWNjb3VudCk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGUuYWNjb3VudFBhZ2UrXCIjc3Vic2NyaWJlXCIpOy8vIHBhc3PDqWUgZGlyZWN0ZW1lbnQgaWNpLCBsJ2FuY3JlICNzdWJzY3JpYmUgbmUgZm9uY3Rpb25uZSBwYXMgIT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdHVzLmxlbmd0aCE9PTAgJiYgc3RhdHVzLmluZGV4T2YocmVzcG9uc2Uuc3RhdHVzKT09PS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxvY2FseShcInVzZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9ICgpID0+IHJlamVjdCh4aHIuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8gQ2V0dGUgZm9uY3Rpb24gc2VydCDDoCBsYSBwcsOpY8OpZGVudGUgZW4gY2FzIGRlIGNvbm5leGlvbiBub24gdmFsaWRlXG5jb25zdCByZWRpcmVjdFVzZXIgPSAodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCkgPT5cbntcbiAgICBpZighaXNFbXB0eShtZXNzYWdlKSlcbiAgICAgICAgc2F2ZUxvY2FseShcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgaWYoIWlzRW1wdHkodXJsV2FudGVkKSlcbiAgICAgICAgc2F2ZUxvY2FseShcInVybFwiLCB1cmxXYW50ZWQpO1xuICAgIGlmKCFpc0VtcHR5KHVybFJlZGlyZWN0aW9uKSlcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmxSZWRpcmVjdGlvbik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/front/public/JS/subscribe.app.js b/front/public/JS/subscribe.app.js index bdd59d6..fc6e1d0 100644 --- a/front/public/JS/subscribe.app.js +++ b/front/public/JS/subscribe.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -605,99 +614,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1445,4 +1433,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9zdWJzY3JpYmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJjb25maWdVc2VycyIsImJ0blN1Ym1pdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZSZXNwb25zZSIsImVtYWlsSW5wdXQiLCJteUZvcm0iLCJpbml0aWFsaXNlIiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJ1c2VyIiwiZ2V0TG9jYWx5IiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJzdHlsZSIsImRpc3BsYXkiLCJpbm5lckhUTUwiLCJsb2FkTWF0b21vIiwic2V0QXR0cmlidXRlc1RvSW5wdXRzIiwiZSIsImFkZEVsZW1lbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWxsb0RldiIsImFkZEV2ZW50TGlzdGVuZXIiLCJlbWFpbFZhbHVlIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsImZyZWUiLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiZGF0YXMiLCJlbWFpbFRlc3QiLCJzZW5kIiwic3RyaW5naWZ5IiwicHJldmVudERlZmF1bHQiLCJtZXNzYWdlIiwicmVtb3ZlTG9jYWx5IiwiZXJyb3JzIiwiZ2V0RGF0YXNGcm9tSW5wdXRzIiwidGltZURpZmZlcmVuY2UiLCJnZXRUaW1lRGlmZmVyZW5jZSIsImNoZWNrQW5zd2VyRGF0YXMiLCJzYXZlTG9jYWx5IiwiZGF0YSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJqc29uIiwiZ2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJjbGFzc0xpc3QiLCJhZGQiLCJhdHRyaWJ1dE5hbWUiLCJhcHBlbmRDaGlsZCIsImxvZyIsImxpbmsiLCJob21lUGFnZSIsImlucHV0c0NvbmYiLCJlbGVtZW50cyIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsImVtcHlGb3JtIiwidHlwZSIsImNoZWNrZWQiLCJlbXB5QW5kSGlkZUZvcm0iLCJfcGFxIiwid2luZG93IiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJwYXJzZUludCIsImNvb2tpZVRpbWVvdXQiLCJvcmlnaW5hbFRpbWVvdXQiLCJzZXRWaXNpdG9yQ29va2llVGltZW91dCIsInUiLCJkIiwiZyIsInMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImFzeW5jIiwic3JjIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsInRva2VuIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJsb2NhdGlvbiIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVy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QUMsTUFBRCxDQUFaO0FBQ0F3Rix3QkFBWSxDQUFDTixjQUFELEVBQWlCbkYsT0FBakIsRUFBMEJvRixTQUExQixDQUFaO0FBQ0FFLG1CQUFPLENBQUMsS0FBRCxDQUFQO0FBQ0g7QUFDSixTQTVDRDs7QUE2Q0F6RyxXQUFHLENBQUNxSCxPQUFKLEdBQWMsTUFBTVgsTUFBTSxDQUFDMUcsR0FBRyxDQUFDc0gsVUFBTCxDQUExQjs7QUFDQXRILFdBQUcsQ0FBQ2dCLElBQUo7QUFDSDtBQUNKO0FBQ0osR0F0RU0sQ0FBUDtBQXVFSCxDQXpFTSxDLENBMEVQOztBQUNBLE1BQU00RixZQUFZLEdBQUcsQ0FBQ04sY0FBRCxFQUFpQm5GLE9BQWpCLEVBQTBCb0YsU0FBMUIsS0FDckI7QUFDSSxNQUFHLENBQUN4TiwyREFBTyxDQUFDb0ksT0FBRCxDQUFYLEVBQ0lPLG9FQUFVLENBQUMsU0FBRCxFQUFZUCxPQUFaLENBQVY7QUFDSixNQUFHLENBQUNwSSwyREFBTyxDQUFDd04sU0FBRCxDQUFYLEVBQ0k3RSxvRUFBVSxDQUFDLEtBQUQsRUFBUTZFLFNBQVIsQ0FBVjtBQUNKLE1BQUcsQ0FBQ3hOLDJEQUFPLENBQUN1TixjQUFELENBQVgsRUFDSXRDLE1BQU0sQ0FBQ2tELFFBQVAsQ0FBZ0JFLE1BQWhCLENBQXVCZCxjQUF2QjtBQUNQLENBUkQsQyIsImZpbGUiOiIuL0pTL3N1YnNjcmliZS5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9zdWJzY3JpYmUuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwiLy8gU2kgbm9uIHV0aWxpc8OpLCBzdXBwcmltZXIgbCdhcHBlbCBkZXMgSlMgZnJvbnQtZW5kIHB1aXMgcmVjb21waWxlci5cbi8vIFJldm9pciBjb21tZW50IHLDqW9yZ2FuaXNlciBjZWxhIHNvdXMtZm9ybWUgZGUgbW9kdWxlIGluZMOpcGVuZGFudC5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBTdGF0cyBNYXRvbW8gOlxuICAgIG1hdG9tbzogeyB1cmw6IFwiaHR0cHM6Ly9zdGF0cy5sZS1mYWItbGFiLmNvbS9cIiwgc2l0ZUlkOiBcIjVcIiB9LFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvdXNlclwiOiBcIi4uL2xhbmcvZnIvdXNlci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3VzZXIkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBEVSBGT1JNVUxBSVJFIFBFUk1FVFRBTlQgREUgQ1LDiUVSIFNPTiBDT01QVEVcblxuLy8vIEwndXRpbGlzYXRldXIgcGV1dCBhdm9pciByw6lwb25kdSDDoCB1biBxdWl6IGF2YW50IGQnYXJyaXZlciBzdXIgbGEgcGFnZSBkJ2luc2NyaXB0aW9uXG4vLy8gRGVzIGNlIGNhcyBpbCBmYXV0IGVucmVnaXN0cmVyIHNvbiByw6lzdWx0YXQgZW4gbcOqbWUgdGVtcHMgcXVlIGxlcyBwcmVtacOocmVzIGluZm9ybWF0aW9ucyBkZSBzb24gY29tcHRlIChlbWFpbCwgb2sgQ0dVKVxuLy8vIExlcyBpbmZvcyBkdSBjb21wdGUgc29udCBjb21wbMOpdMOpZXMgKG1vdCBkZSBwYXNzZSwgY29kZSBwYXJyYWluLi4uKSBhdSBtb21lbnQgZGUgbGEgdmFsaWRhdGlvbi5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7Ly8gYmVzb2luIGRlIHRvdXRlcyBsZXMgZMOpY2xhcmF0aW9ucywgY2FyIGFwcGVsIGR5bmFtaXF1ZSA6IGNvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXVxuY29uc3QgY29uZmlnVXNlcnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpOy8vIGlkZW0gcG91ciBjb25maWd1cmVyIGZvcm11bGFpcmVcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGF0YXNGcm9tSW5wdXRzLCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgY2hlY2tBbnN3ZXJEYXRhcywgY2hlY2tTZXNzaW9uLCBnZXRUaW1lRGlmZmVyZW5jZSB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBhbHJlYWR5Q29ubmVjdGVkLCBuZWVkVW5pcXVlRW1haWwgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0blN1Ym1pdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN1Ym1pdERhdGFzXCIpO1xuY29uc3QgZGl2UmVzcG9uc2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGVtYWlsSW5wdXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbFwiKTtcbmNvbnN0IG15Rm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN1YnNjcmlwdGlvblwiKTtcblxuLy8gVGVzdCBkZSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciArIGFmZmljaGFnZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24uXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gb24gY2hhbmdlIGxlIGxpZW4gZCdhY2PDqHMgYXUgY29tcHRlXG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgbXlGb3JtLmlubmVySFRNTD1cIjxwIGNsYXNzPSdpbmZvJz5cIithbHJlYWR5Q29ubmVjdGVkK1wiPC9wPlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBteUZvcm0pO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7XG5oZWxsb0RldigpO1xuXG4vLyBUZXN0ZSBzaSBsJ2UtbWFpbCBzYWlzaSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciB1biBhdXRyZSBjb21wdGUuXG4vLyBTaSBjJ2VzdCBsZSBjYXMsIGxhIHZhbGlkYXRpb24gZHUgZm9ybXVsYWlyZSBlc3QgYmxvcXXDqWUuXG5lbWFpbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgY29uc3QgZW1haWxWYWx1ZT1lbWFpbElucHV0LnZhbHVlLnRyaW0oKTtcbiAgICBpZihlbWFpbFZhbHVlIT09XCJcIilcbiAgICB7XG4gICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuY2hlY2tJZklzRW1haWxmcmVlUm91dGUpO1xuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmZyZWUgIT09IHVuZGVmaW5lZCAmJiByZXNwb25zZS5mcmVlID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbE1lc3NhZ2VcIiksIFwiZGl2XCIsIG5lZWRVbmlxdWVFbWFpbC5yZXBsYWNlKFwiI1VSTFwiLCBjb25maWdUZW1wbGF0ZS5jb25uZWN0aW9uUGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgYnRuU3VibWl0LnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJ0blN1Ym1pdC5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgIGNvbnN0IGRhdGFzPXsgZW1haWxUZXN0OmVtYWlsVmFsdWUgfTtcbiAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICB9XG59KTtcbi8vIFN1cHByaW1lIGwnw6l2ZW50dWVsIG1lc3NhZ2UgZCdlcnJldXIgZMOpasOgIGluamVjdMOpIHNpIGwndXRpbGlzYXRldXIgcmV2aWVudCBkYW5zIGxlIGNoYW1wIDpcbmVtYWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbE1lc3NhZ2VcIikuaW5uZXJIVE1MPVwiXCI7XG59KTtcblxuLy8gVHJhaXRlbWVudCBkZSBsJ2Vudm9pIGRlcyBkb25uw6llcyBkJ2luc2NyaXB0aW9uIDpcbm15Rm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7ICAgICAgICBcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5zdWJzY3JpYmVSb3V0ZSk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJsYXN0QW5zd2VyXCIpOy8vICEgaW1wb3J0YW50IHBvdXIgbmUgcGFzIGVucmVnaXN0ZXIgcGx1c2lldXJzIGZvaXMgbGUgcsOpc3VsdGF0LlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMobXlGb3JtKTtcbiAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLnRpbWVEaWZmZXJlbmNlPWdldFRpbWVEaWZmZXJlbmNlKGNvbmZpZ1VzZXJzKTtcbiAgICAgICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgYSBwcsOpY8OpZGVtZW50IHLDqXBvbmR1IMOgIHVuIHF1aXosIGonYWpvdXRlIGxlcyBpbmZvcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgIGRhdGFzPWNoZWNrQW5zd2VyRGF0YXMoZGF0YXMpO1xuICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9zdWJzY3JpYmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2RvbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZXZlcnl3aGVyZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZm9ybXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImNvbmZpZ1VzZXJzIiwiYnRuU3VibWl0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdlJlc3BvbnNlIiwiZW1haWxJbnB1dCIsIm15Rm9ybSIsImluaXRpYWxpc2UiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsInVzZXIiLCJnZXRMb2NhbHkiLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsInN0eWxlIiwiZGlzcGxheSIsImlubmVySFRNTCIsImxvYWRNYXRvbW8iLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJlIiwiYWRkRWxlbWVudCIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2IiwiYWRkRXZlbnRMaXN0ZW5lciIsImVtYWlsVmFsdWUiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwiZnJlZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInNldFJlcXVlc3RIZWFkZXIiLCJkYXRhcyIsImVtYWlsVGVzdCIsInNlbmQiLCJzdHJpbmdpZnkiLCJwcmV2ZW50RGVmYXVsdCIsIm1lc3NhZ2UiLCJyZW1vdmVMb2NhbHkiLCJlcnJvcnMiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ0aW1lRGlmZmVyZW5jZSIsImdldFRpbWVEaWZmZXJlbmNlIiwiY2hlY2tBbnN3ZXJEYXRhcyIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsImFwcGVuZENoaWxkIiwibG9nIiwibGluayIsImhvbWVQYWdlIiwiaW5wdXRzQ29uZiIsImVsZW1lbnRzIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJ0eXBlIiwiY2hlY2tlZCIsImVtcHlBbmRIaWRlRm9ybSIsIl9wYXEiLCJ3aW5kb3ciLCJwdXNoIiwic2VsZiIsImdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQiLCJub3ciLCJub3dUcyIsInJvdW5kIiwiZ2V0VGltZSIsInZpc2l0b3JJbmZvIiwiZ2V0VmlzaXRvckluZm8iLCJjcmVhdGVUcyIsInBhcnNlSW50IiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJzZXRTZXNzaW9uIiwidXNlcklkIiwidG9rZW4iLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwidXJsUmVkaXJlY3Rpb24iLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsIm9ubG9hZCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsImxvY2F0aW9uIiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsTUFBTUEsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLG1DQUFELENBQXJCOztBQUNBLE1BQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQyxxREFBRCxDQUE5Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQ0E7QUFDSUMsUUFBTSxFQUFFLDJCQURaO0FBRUlDLFNBQU8sRUFBRSx1QkFGYjtBQUdJQyxXQUFTLEVBQUUsU0FIZjtBQUlJQyxZQUFVLEVBQUUsbUJBSmhCO0FBS0lDLFlBQVUsRUFBRSxtQkFMaEI7QUFNSUMsYUFBVyxFQUFFLHVCQU5qQjtBQU9JQyxXQUFTLEVB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QyIsImZpbGUiOiIuL0pTL3N1YnNjcmliZS5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9zdWJzY3JpYmUuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwiLy8gU2kgbm9uIHV0aWxpc8OpLCBzdXBwcmltZXIgbCdhcHBlbCBkZXMgSlMgZnJvbnQtZW5kIHB1aXMgcmVjb21waWxlci5cbi8vIFJldm9pciBjb21tZW50IHLDqW9yZ2FuaXNlciBjZWxhIHNvdXMtZm9ybWUgZGUgbW9kdWxlIGluZMOpcGVuZGFudC5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBTdGF0cyBNYXRvbW8gOlxuICAgIG1hdG9tbzogeyB1cmw6IFwiaHR0cHM6Ly9zdGF0cy5sZS1mYWItbGFiLmNvbS9cIiwgc2l0ZUlkOiBcIjVcIiB9LFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvdXNlclwiOiBcIi4uL2xhbmcvZnIvdXNlci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3VzZXIkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gR0VTVElPTiBEVSBGT1JNVUxBSVJFIFBFUk1FVFRBTlQgREUgQ1LDiUVSIFNPTiBDT01QVEVcblxuLy8vIEwndXRpbGlzYXRldXIgcGV1dCBhdm9pciByw6lwb25kdSDDoCB1biBxdWl6IGF2YW50IGQnYXJyaXZlciBzdXIgbGEgcGFnZSBkJ2luc2NyaXB0aW9uXG4vLy8gRGVzIGNlIGNhcyBpbCBmYXV0IGVucmVnaXN0cmVyIHNvbiByw6lzdWx0YXQgZW4gbcOqbWUgdGVtcHMgcXVlIGxlcyBwcmVtacOocmVzIGluZm9ybWF0aW9ucyBkZSBzb24gY29tcHRlIChlbWFpbCwgb2sgQ0dVKVxuLy8vIExlcyBpbmZvcyBkdSBjb21wdGUgc29udCBjb21wbMOpdMOpZXMgKG1vdCBkZSBwYXNzZSwgY29kZSBwYXJyYWluLi4uKSBhdSBtb21lbnQgZGUgbGEgdmFsaWRhdGlvbi5cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIHRpcsOpcyBkdSBiYWNrZW5kIDpcbmltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHRoZW1lIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7Ly8gYmVzb2luIGRlIHRvdXRlcyBsZXMgZMOpY2xhcmF0aW9ucywgY2FyIGFwcGVsIGR5bmFtaXF1ZSA6IGNvbmZpZ1RlbXBsYXRlW2hvbWVQYWdlXVxuY29uc3QgY29uZmlnVXNlcnMgPSByZXF1aXJlKFwiLi4vLi4vY29uZmlnL3VzZXJzXCIpOy8vIGlkZW0gcG91ciBjb25maWd1cmVyIGZvcm11bGFpcmVcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSwgcmVtb3ZlTG9jYWx5LCBzYXZlTG9jYWx5IH0gZnJvbSBcIi4vdG9vbHMvY2xpZW50c3RvcmFnZS5qc1wiO1xuaW1wb3J0IHsgYWRkRWxlbWVudCB9IGZyb20gXCIuL3Rvb2xzL2RvbS5qc1wiO1xuaW1wb3J0IHsgaGVsbG9EZXYsIHVwZGF0ZUFjY291bnRMaW5rIH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGF0YXNGcm9tSW5wdXRzLCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgY2hlY2tBbnN3ZXJEYXRhcywgY2hlY2tTZXNzaW9uLCBnZXRUaW1lRGlmZmVyZW5jZSB9IGZyb20gXCIuL3Rvb2xzL3VzZXJzLmpzXCI7XG5cbi8vIERpY3Rpb25uYWlyZXMgOlxuY29uc3QgeyBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBhbHJlYWR5Q29ubmVjdGVkLCBuZWVkVW5pcXVlRW1haWwgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGJ0blN1Ym1pdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN1Ym1pdERhdGFzXCIpO1xuY29uc3QgZGl2UmVzcG9uc2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcbmNvbnN0IGVtYWlsSW5wdXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbFwiKTtcbmNvbnN0IG15Rm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN1YnNjcmlwdGlvblwiKTtcblxuLy8gVGVzdCBkZSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciArIGFmZmljaGFnZSBmb3JtdWxhaXJlIGQnaW5zY3JpcHRpb24uXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkPWF3YWl0IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICBpZihpc0Nvbm5lY3RlZClcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gb24gY2hhbmdlIGxlIGxpZW4gZCdhY2PDqHMgYXUgY29tcHRlXG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB1cGRhdGVBY2NvdW50TGluayh1c2VyLnN0YXR1cywgY29uZmlnVGVtcGxhdGUpO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICAgICAgbXlGb3JtLmlubmVySFRNTD1cIjxwIGNsYXNzPSdpbmZvJz5cIithbHJlYWR5Q29ubmVjdGVkK1wiPC9wPlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbG9hZE1hdG9tbygpO1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBteUZvcm0pO1xuICAgICAgICAgICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGUpXG4gICAge1xuICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5pbml0aWFsaXNlKCk7XG5oZWxsb0RldigpO1xuXG4vLyBUZXN0ZSBzaSBsJ2UtbWFpbCBzYWlzaSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciB1biBhdXRyZSBjb21wdGUuXG4vLyBTaSBjJ2VzdCBsZSBjYXMsIGxhIHZhbGlkYXRpb24gZHUgZm9ybXVsYWlyZSBlc3QgYmxvcXXDqWUuXG5lbWFpbElucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgY29uc3QgZW1haWxWYWx1ZT1lbWFpbElucHV0LnZhbHVlLnRyaW0oKTtcbiAgICBpZihlbWFpbFZhbHVlIT09XCJcIilcbiAgICB7XG4gICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuY2hlY2tJZklzRW1haWxmcmVlUm91dGUpO1xuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLmZyZWUgIT09IHVuZGVmaW5lZCAmJiByZXNwb25zZS5mcmVlID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbE1lc3NhZ2VcIiksIFwiZGl2XCIsIG5lZWRVbmlxdWVFbWFpbC5yZXBsYWNlKFwiI1VSTFwiLCBjb25maWdUZW1wbGF0ZS5jb25uZWN0aW9uUGFnZSksIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgYnRuU3VibWl0LnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJ0blN1Ym1pdC5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgIGNvbnN0IGRhdGFzPXsgZW1haWxUZXN0OmVtYWlsVmFsdWUgfTtcbiAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICB9XG59KTtcbi8vIFN1cHByaW1lIGwnw6l2ZW50dWVsIG1lc3NhZ2UgZCdlcnJldXIgZMOpasOgIGluamVjdMOpIHNpIGwndXRpbGlzYXRldXIgcmV2aWVudCBkYW5zIGxlIGNoYW1wIDpcbmVtYWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlbWFpbE1lc3NhZ2VcIikuaW5uZXJIVE1MPVwiXCI7XG59KTtcblxuLy8gVHJhaXRlbWVudCBkZSBsJ2Vudm9pIGRlcyBkb25uw6llcyBkJ2luc2NyaXB0aW9uIDpcbm15Rm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG57XG4gICAgdHJ5XG4gICAge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7ICAgICAgICBcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5zdWJzY3JpYmVSb3V0ZSk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDEpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBteUZvcm0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHJlc3BvbnNlLm1lc3NhZ2UsIFwiXCIsIFtcInN1Y2Nlc3NcIl0pO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJsYXN0QW5zd2VyXCIpOy8vICEgaW1wb3J0YW50IHBvdXIgbmUgcGFzIGVucmVnaXN0ZXIgcGx1c2lldXJzIGZvaXMgbGUgcsOpc3VsdGF0LlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5lcnJvcnMsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgc2VydmVyRXJyb3IsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgIGxldCBkYXRhcz1nZXREYXRhc0Zyb21JbnB1dHMobXlGb3JtKTtcbiAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzLnRpbWVEaWZmZXJlbmNlPWdldFRpbWVEaWZmZXJlbmNlKGNvbmZpZ1VzZXJzKTtcbiAgICAgICAgICAgIC8vIFNpIGwndXRpbGlzYXRldXIgYSBwcsOpY8OpZGVtZW50IHLDqXBvbmR1IMOgIHVuIHF1aXosIGonYWpvdXRlIGxlcyBpbmZvcyBkZSBzb24gcsOpc3VsdGF0IDpcbiAgICAgICAgICAgIGRhdGFzPWNoZWNrQW5zd2VyRGF0YXMoZGF0YXMpO1xuICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxufSk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/subscribeValidation.app.js b/front/public/JS/subscribeValidation.app.js index 46cb916..c33061d 100644 --- a/front/public/JS/subscribeValidation.app.js +++ b/front/public/JS/subscribeValidation.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -605,99 +614,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1014,9 +1002,9 @@ const { passwordCopied, validationMessage } = __webpack_require__("../lang sync recursive ^\\.\\/.*\\/user$")("./" + lang + "/user"); // Principaux éléments du DOM manipulés : +//const codeGodfatherInput=document.getElementById("codeGodfather"); -const codeGodfatherInput = document.getElementById("codeGodfather"); const divExplanations = document.getElementById("explanations"); const divMessage = document.getElementById("message"); const divResponse = document.getElementById("response"); @@ -1088,32 +1076,37 @@ const initialise = async () => { passwordInput.select(); document.execCommand("copy"); Object(_tools_dom_js__WEBPACK_IMPORTED_MODULE_2__["addElement"])(passwordHelp, "div", passwordCopied, "", ["success"]); - }); // Vérifie que le code/e-mail de parrainage saisi est valide : - - codeGodfatherInput.addEventListener("blur", function (e) { - const codeValue = codeGodfatherInput.value.trim(); - - if (codeValue !== "") { - const xhr = new XMLHttpRequest(); - xhr.open("POST", _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["apiUrl"] + configUsers.userRoutes + configUsers.getGodfatherRoute); - - xhr.onreadystatechange = function () { - if (this.readyState == XMLHttpRequest.DONE) { - if (this.status === 204) Object(_tools_dom_js__WEBPACK_IMPORTED_MODULE_2__["addElement"])(document.getElementById("codeGodfatherMessage"), "div", godfatherNotFound, "", ["error"]);else Object(_tools_dom_js__WEBPACK_IMPORTED_MODULE_2__["addElement"])(document.getElementById("codeGodfatherMessage"), "div", godfatherFound, "", ["success"]); - } - }; - - xhr.setRequestHeader("Content-Type", "application/json"); - const datas = { - codeTest: codeValue - }; - xhr.send(JSON.stringify(datas)); - } - }); // Efface l'éventuel message déjà injecté si l'utilisateur revient sur ce champ de saisie : - - codeGodfatherInput.addEventListener("focus", function (e) { - Object(_tools_dom_js__WEBPACK_IMPORTED_MODULE_2__["addElement"])(document.getElementById("codeGodfatherMessage"), "i", notRequired); - }); // Traite de l'envoi d'une mise à jour des infos : + }); + /* + // Vérifie que le code/e-mail de parrainage saisi est valide : + codeGodfatherInput.addEventListener("blur", function(e) + { + const codeValue=codeGodfatherInput.value.trim(); + if(codeValue!=="") + { + const xhr = new XMLHttpRequest(); + xhr.open("POST", apiUrl+configUsers.userRoutes+configUsers.getGodfatherRoute); + xhr.onreadystatechange = function() + { + if (this.readyState == XMLHttpRequest.DONE) + { + if (this.status === 204) + addElement(document.getElementById("codeGodfatherMessage"), "div", godfatherNotFound, "", ["error"]); + else + addElement(document.getElementById("codeGodfatherMessage"), "div", godfatherFound, "", ["success"]); + } + } + xhr.setRequestHeader("Content-Type", "application/json"); + const datas={ codeTest:codeValue }; + xhr.send(JSON.stringify(datas)); + } + }); + // Efface l'éventuel message déjà injecté si l'utilisateur revient sur ce champ de saisie : + codeGodfatherInput.addEventListener("focus", function(e) + { + addElement(document.getElementById("codeGodfatherMessage"), "i", notRequired); + });*/ + // Traite de l'envoi d'une mise à jour des infos : formAccount.addEventListener("submit", function (e) { e.preventDefault(); @@ -1541,4 +1534,4 @@ const redirectUser = (urlRedirection, message, urlWanted) => { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9zdWJzY3JpYmVWYWxpZGF0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmQiLCJtaW5sZW5ndGgiLCJkaXJDYWNoZVVzZXJzIiwiZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMiLCJkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIiwiZGlyQ2FjaGVRdWVzdGlvbnMiLCJkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMiLCJkaXJIVE1MUXVlc3Rpb25uYWlyZXMiLCJkaXJXZWJRdWVzdGlvbm5haXJlcyIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzIiwiZ2V0UXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUiLCJnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwicmVnZW5lcmF0ZUhUTUwiLCJzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ3JvdXBSb3V0ZXMiLCJnZXRHcm91cFJvdXRlIiwicHJldmlld0dyb3VwUm91dGVzIiwic2VhcmNoR3JvdXBzUm91dGUiLCJxdWVzdGlvbnNSb3V0ZSIsInRhZ3NTZWFyY2hSb3V0ZSIsImdldEFkbWluU3RhdHMiLCJnZXRQcmV2aW91c0Fuc3dlcnMiLCJnZXRTdGF0c0Fuc3dlcnMiLCJzYXZlQW5zd2Vyc1JvdXRlIiwiUXVlc3Rpb25uYWlyZSIsInRpdGxlIiwibWF4bGVuZ3RoIiwicmVxdWlyZWQiLCJzbHVnIiwiaW50cm9kdWN0aW9uIiwic2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJHcm91cCIsIlF1ZXN0aW9uIiwidGV4dCIsInJhbmsiLCJtaW4iLCJkZWZhdWx0VmFsdWUiLCJDaG9pY2UiLCJzZWFyY2giLCJzZWFyY2hHcm91cHMiLCJkaXJDYWNoZUdyb3VwcyIsImRpckNhY2hlVGFncyIsImRpckhUTUxHcm91cHMiLCJkaXJIVE1MTmV3cyIsImRpckhUTUxUYWdzIiwiZGlyV2ViR3JvdXBzIiwiZGlyV2ViTmV3cyIsImRpcldlYlRhZ3MiLCJuYlJhbmRvbVJlc3VsdHMiLCJuYlRhZ3NNaW4iLCJuYlRhZ3NNYXgiLCJ1c2VyUm91dGVzIiwiY2hlY2tEZWxldGVMaW5rUm91dGUiLCJjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZSIsImNoZWNrTG9naW5Sb3V0ZSIsImNoZWNrTmV3TG9naW5MaW5rUm91dGUiLCJjaGVja1N1YnNjcmliZVRva2VuUm91dGUiLCJjb25uZWN0aW9uUm91dGUiLCJjb25uZWN0aW9uV2l0aExpbmtSb3V0ZSIsImNyZWF0ZVVzZXJSb3V0ZSIsImdldEdvZENoaWxkcyIsImdldEdvZGZhdGhlclJvdXRlIiwiZ2V0TG9naW5MaW5rUm91dGUiLCJnZXRQYXltZW50cyIsImdldFVzZXJJbmZvcyIsImdldFVzZXJzUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFVzZXJSb3V0ZSIsInNpZ251cENvbXBsZXRpb25Sb3V0ZSIsInN1YnNjcmliZVJvdXRlIiwidW5zdWJzY3JpYmVSb3V0ZSIsInVwZGF0ZVVzZXJJbmZvcyIsInZhbGlkYXRlVXNlclJvdXRlIiwibmFtZSIsImVtYWlsIiwibmV3UGFzc3dvcmQiLCJjb2RlR29kZmF0aGVyIiwiY2d1T2siLCJ2YWx1ZSIsInRpbWVEaWZmZXJlbmNlTWluIiwidGltZURpZmZlcmVuY2VNYXgiLCJkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMiLCJhZGRCdG5UeHQiLCJhZGRPa01lc3NhZ2UiLCJhbGVydE5ld1dpbmRvdyIsImJhZFVybCIsImJ0bkxpbmtUb1F1ZXN0aW9ubmFpcmUiLCJidG5Qcm9wb3NlQ29ubmVjdGlvbiIsImJ0blByb3Bvc2VTdWJzY3JpYmUiLCJidG5TaG93T25XZWJTaXRlIiwiZGVsZXRlQnRuVHh0IiwiZGVsZXRlRmFpbE1lc3NhZ2UiLCJkZWxldGVPa01lc3NhZ2UiLCJmYWlsQXV0aCIsImZhaWxBdXRoQ3JvbiIsImZhaWxBdXRoSGVhZGVyIiwiZmFpbEF1dGhJZCIsImZhaWxBdXRoVG9rZW4iLCJuZWVkZWRQYXJhbXMiLCJuZXh0UGFnZSIsIm5vdEFsbG93ZWQiLCJub3RSZXF1aXJlZCIsIm5vdFZhbGlkRm9ybWF0IiwicHJldmlvdXNQYWdlIiwic2VydmVyRXJyb3IiLCJzZXJ2ZXJFcnJvckFkbWluIiwic2l0ZUhUTUxUaXRsZSIsInNpdGVNZXRhRGVzY3JpcHRpb24iLCJzY3JpcHRUaW1pbmdBbGVydCIsInNjcmlwdFRpbWluZ0luZm8iLCJzdGF0c0FkbWluIiwic3Vic2NyaXB0aW9uQ2FsbCIsInVwZGF0ZUJ0blR4dCIsInVwZGF0ZU9rTWVzc2FnZSIsImFscmVhZHlDb25uZWN0ZWQiLCJiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UiLCJiYWRQYXNzd29yZCIsImJ5ZWJ5ZU1lc3NhZ2UiLCJjb25uZWN0aW9uT2siLCJjcmVhdGlvbk9rTWVzc2FnZSIsImNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2UiLCJkZWxldGVJbmFjdGl2ZVVzZXJzTWVzc2FnZSIsImVtYWlsTm90Rm91bmQiLCJmYWlsQm90VGVzdCIsImZhaWxCb3RUZXN0TG9nIiwiZm9ybXNFbWFpbExhYmVsIiwiZm9ybXNFbWFpbFBsYWNlaG9sZGVyIiwiZm9ybXNFbWFpbDJQbGFjZWhvbGRlciIsImZvcm1zQ0dVT2tMYWJlbCIsImZvcm1zU3VibWl0VHh0IiwiZ29kZmF0aGVyRm91bmQiLCJnb2RmYXRoZXJOb3RGb3VuZCIsImluZm9zQWRtaW5Hb2RmYXRoZXIiLCJpbmZvc0FkbWluTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJGb3JBZG1pbiIsImluZm9zVXNlck5iR29kQ2hpbGRzIiwiaW5mb3NVc2VyTm9Hb2RjaGlsZHMiLCJtYWlsRGVsZXRlQm9keUhUTUwiLCJtYWlsRGVsZXRlQm9keVR4dCIsIm1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtNZXNzYWdlIiwibWFpbERlbGV0ZUxpbmtPa01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua1R4dCIsIm1haWxEZWxldGVTdWJqZWN0IiwibWFpbExvZ2luTGlua0JvZHlIVE1MIiwibWFpbExvZ2luTGlua0JvZHlUeHQiLCJtYWlsTG9naW5MaW5rTWVzc2FnZSIsIm1haWxMb2dpbkxpbmtTdWJqZWN0IiwibWFpbExvZ2luTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIiwibWFpbFRoYW5rR29kZmF0aGVyQm9keVR4dCIsIm1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQiLCJtYWlsVGhhbmtHb2RmYXRoZXJTdWJqZWN0IiwibWFpbFVwZGF0ZUxvZ2luQm9keUhUTUwiLCJtYWlsVXBkYXRlTG9naW5Cb2R5VHh0IiwibWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5MaW5rVHh0IiwibWFpbFVwZGF0ZUxvZ2luT2tNZXNzYWdlIiwibWFpbFVwZGF0ZUxvZ2luU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5SFRNTCIsIm1haWxWYWxpZGF0aW9uTGlua1NCb2R5VHh0IiwibWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCIsIm1haWxWYWxpZGF0aW9uTGlua1R4dCIsIm1haWxWYWxpZGF0aW9uTWVzc2FnZSIsIm1haWxXZWxjb21lQm9keUhUTUwiLCJtYWlsV2VsY29tZUJvZHlUeHQiLCJtYWlsV2VsY29tZUxpbmtUeHQiLCJtYWlsV2VsY29tZVN1YmplY3QiLCJuZWVkQmVDb25uZWN0ZWQiLCJuZWVkQ2hvb3NlTG9naW5XYXkiLCJuZWVkRW1haWwiLCJuZWVkS25vd05ld3NsZXR0ZXJPayIsIm5lZWRMYW5ndWFnZSIsIm5lZWRMb25nUGFzc1dvcmQiLCJuZWVkTWF4VGltZURpZmZlcmVuY2UiLCJuZWVkTWluVGltZURpZmZlcmVuY2UiLCJuZWVkTmFtZSIsIm5lZWROb3RUb29Mb25nTmFtZSIsIm5lZWROb3RUb29Mb25nRW1haWwiLCJuZWVkUGFzc1dvcmQiLCJuZWVkU01UUCIsIm5lZWRTTVRQTm90Rm91bmQiLCJuZWVkU3RhdHVzIiwibmVlZFRpbWVEaWZmZXJlbmNlIiwibmVlZFVHQ09rIiwibmVlZFVuaXF1ZUVtYWlsIiwibmVlZFZhbGlkYXRpb25Ub0xvZ2luIiwibmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIiwicGFzc3dvcmRDb3BpZWQiLCJzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQiLCJ0b29NYW55TG9naW5GYWlscyIsInVwZGF0ZWRGYWlsZWRHb2RmYXRoZXJOb3RGb3VuZCIsInVwZGF0ZWROZWVkR29vZEVtYWlsIiwidXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIiwidXBkYXRlZE5lZWRVbmlxdWVFbWFpbCIsInVwZGF0ZWROZWVkVmFsaWRhdGVkVXNlciIsInVwZGF0ZWRPa01lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2UiLCJ2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbiIsInZhbGlkYXRpb25NZXNzYWdlIiwidmFsaWRhdGlvbk1lc3NhZ2VBZG1pbiIsIndlbGNvbWVNZXNzYWdlIiwiVG9vbCIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsIm15U3RyaW5nIiwiaXNFbXB0eSIsIm1heCIsImxlbmd0aCIsInN1YnN0cmluZyIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwiY29uZmlnVGVtcGxhdGUiLCJjb25maWdVc2VycyIsImNvZGVHb2RmYXRoZXJJbnB1dCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkaXZFeHBsYW5hdGlvbnMiLCJkaXZNZXNzYWdlIiwiZGl2UmVzcG9uc2UiLCJmb3JtQWNjb3VudCIsInBhc3N3b3JkSW5wdXQiLCJwYXNzd29yZExpbmsiLCJwYXNzd29yZEhlbHAiLCJpbml0aWFsaXNlIiwic3R5bGUiLCJkaXNwbGF5IiwiaXNDb25uZWN0ZWQiLCJjaGVja1Nlc3Npb24iLCJzYXZlTG9jYWx5IiwibWVzc2FnZSIsImNvbG9yIiwidXNlciIsImdldExvY2FseSIsImhvbWVQYWdlIiwic3RhdHVzIiwid2luZG93IiwibG9jYXRpb24iLCJhc3NpZ24iLCJsb2FkTWF0b21vIiwiZGF0YXMiLCJnZXRVcmxQYXJhbXMiLCJ0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJyZXNwb25zZSIsIkpTT04iLCJwYXJzZSIsInJlc3BvbnNlVGV4dCIsIm5ld1VzZXIiLCJ0b2tlbiIsImFkZEVsZW1lbnQiLCJzZXRBdHRyaWJ1dGVzVG9JbnB1dHMiLCJkYXRhIiwiVXNlciIsImVsZW1lbnRzIiwiU3Vic2NyaXB0aW9uIiwicmVjZWlwdERheXMiLCJjaGVja2VkIiwiY29ubmV4aW9uTWF4VGltZSIsIm5vdyIsInBhcnNlSW50Iiwic2V0U2Vzc2lvbiIsImVycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsInNlbmQiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0IiwidHlwZSIsImdldFBhc3N3b3JkIiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJjb2RlVmFsdWUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiY29kZVRlc3QiLCJzdHJpbmdpZnkiLCJpbm5lckhUTUwiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJVc2VyVXBkYXRlIiwiY29uc29sZSIsImVycm9yIiwiaGVsbG9EZXYiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwianNvbiIsImdldEl0ZW0iLCJyZW1vdmVMb2NhbHkiLCJyZW1vdmVJdGVtIiwiZWx0UGFyZW50IiwiZWx0VHlwZSIsImVsdENvbnRlbnQiLCJlbHRJZCIsImVsdENsYXNzIiwiZWx0QXR0cmlidXRlcyIsIm5ld0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsImxpbmsiLCJpbnB1dHNDb25mIiwibXlGb3JtIiwiaWRJbnB1dCIsImlucHV0SFRNTCIsImF0dHJpYnV0ZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJlbnRyaWUiLCJlbnRyaWVzIiwiZW1weUZvcm0iLCJlbXB5QW5kSGlkZUZvcm0iLCJfcGFxIiwicHVzaCIsInNlbGYiLCJnZXRPcmlnaW5hbFZpc2l0b3JDb29raWVUaW1lb3V0Iiwibm93VHMiLCJyb3VuZCIsImdldFRpbWUiLCJ2aXNpdG9ySW5mbyIsImdldFZpc2l0b3JJbmZvIiwiY3JlYXRlVHMiLCJjb29raWVUaW1lb3V0Iiwib3JpZ2luYWxUaW1lb3V0Iiwic2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLCJ1IiwiZCIsImciLCJzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhc3luYyIsInNyYyIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRlY29kZVVSSSIsImdldFRpbWVEaWZmZXJlbmNlIiwidGltZUxvY2FsIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ1c2VySWQiLCJkdXJhdGlvblRTIiwic3RvcmFnZVVzZXIiLCJkdXJhdGlvbiIsImNoZWNrQW5zd2VyRGF0YXMiLCJsYXN0QW5zd2VyIiwiYW5zd2VyIiwibmJDb3JyZWN0QW5zd2VycyIsIm5iUXVlc3Rpb25zIiwiUXVlc3Rpb25uYWlyZUlkIiwiR3JvdXBJZCIsInVybFJlZGlyZWN0aW9uIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJvbmxvYWQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ0aW1lRGlmZmVyZW5jZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsImluZGV4T2YiLCJvbmVycm9yIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGQSxJQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNBQUQsQ0FBckI7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLHFEQUFELENB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T0FBWixDQUFWO0FBQ0osTUFBRyxDQUFDeEcsMkRBQU8sQ0FBQzRPLFNBQUQsQ0FBWCxFQUNJckksb0VBQVUsQ0FBQyxLQUFELEVBQVFxSSxTQUFSLENBQVY7QUFDSixNQUFHLENBQUM1TywyREFBTyxDQUFDMk8sY0FBRCxDQUFYLEVBQ0k3SCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLE1BQWhCLENBQXVCMkgsY0FBdkI7QUFDUCxDQVJELEMiLCJmaWxlIjoiLi9KUy9zdWJzY3JpYmVWYWxpZGF0aW9uLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL3N1YnNjcmliZVZhbGlkYXRpb24uanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwiLy8gU2kgbm9uIHV0aWxpc8OpLCBzdXBwcmltZXIgbCdhcHBlbCBkZXMgSlMgZnJvbnQtZW5kIHB1aXMgcmVjb21waWxlci5cbi8vIFJldm9pciBjb21tZW50IHLDqW9yZ2FuaXNlciBjZWxhIHNvdXMtZm9ybWUgZGUgbW9kdWxlIGluZMOpcGVuZGFudC5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBTdGF0cyBNYXRvbW8gOlxuICAgIG1hdG9tbzogeyB1cmw6IFwiaHR0cHM6Ly9zdGF0cy5sZS1mYWItbGFiLmNvbS9cIiwgc2l0ZUlkOiBcIjVcIiB9LFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57ICAgIFxuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICBxdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWVzdGlvbm5haXJlXCIsLy8gbGEgYmFzZSDDoCBsYXF1ZWxsZSBzJ2Fqb3V0ZSBsZXMgcm91dGVzIHN1aXZhbnRlc1xuICAgIGdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXM6IFwiL2dldGxpc3RuZXh0cXVlc3Rpb25uYWlyZXMvXCIsXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVJvdXRlczogXCIvZ2V0XCIsXG4gICAgZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSA6IFwiL2dldHJhbmRvbVwiLCBcbiAgICBnZXRTdGF0c1F1ZXN0aW9ubmFpcmVzIDogXCIvc3RhdHMvXCIsXG4gICAgcHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL3ByZXZpZXdcIixcbiAgICBwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9xdWl6L1wiLFxuICAgIHJlZ2VuZXJhdGVIVE1MOiBcIi9odG1scmVnZW5lcmF0ZWRcIixcbiAgICBzZWFyY2hBZG1pblF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hhZG1pblwiLFxuICAgIHNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBncm91cGVzIDpcbiAgICBncm91cFJvdXRlczogXCIvZ3JvdXBcIixcbiAgICBnZXRHcm91cFJvdXRlOiBcIi9nZXQvXCIsXG4gICAgcHJldmlld0dyb3VwUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgc2VhcmNoR3JvdXBzUm91dGUgOiBcIi9zZWFyY2hcIixcbiAgICAvLyAtLSBxdWVzdGlvbnMgJiBjaG9pY2VzIDpcbiAgICBxdWVzdGlvbnNSb3V0ZTogXCIvcXVlc3Rpb24vXCIsXG4gICAgLy8gLS0gdGFncyA6XG4gICAgdGFnc1NlYXJjaFJvdXRlOiBcIi90YWdzL3NlYXJjaC9cIixcbiAgICAvLyAtLSBhbnN3ZXJzIDpcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldFByZXZpb3VzQW5zd2VyczogXCIvdXNlci9hbnN3ZXJzL1wiLFxuICAgIGdldFN0YXRzQW5zd2VycyA6IFwiL3VzZXIvYW53c3dlcnMvc3RhdHMvXCIsLy8gZm9uY3Rpb25uZSBhdXNzaSBwb3VyIGxlcyBncm91cGVzXG4gICAgc2F2ZUFuc3dlcnNSb3V0ZTogXCIvYW5zd2VyL1wiLC8vIGlkZW1cbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBRdWVzdGlvbm5haXJlIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgICAgIGludHJvZHVjdGlvbjogeyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlcyA6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIEdyb3VwIDpcbiAgICB7XG4gICAgICAgIHRpdGxlOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzbHVnOiB7IG1heGxlbmd0aDogMTUwIH0sIC8vIGNoYW1wIHJlcXVpcyBtYWlzIGNhbGN1bMOpIMOgIHBhcnRpciBkdSB0aXRyZSBxZCBsYWlzc8OpIHZpZGUgZGFucyBsZSBmb3JtdWxhaXJlXG4gICAgfSxcbiAgICBRdWVzdGlvbiA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByYW5rOiB7IHJlcXVpcmVkOiB0cnVlLCBtaW46MSwgZGVmYXVsdFZhbHVlOjEgfVxuICAgIH0sICAgICAgICAgIFxuICAgIENob2ljZSA6XG4gICAge1xuICAgICAgICB0ZXh0OiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaEdyb3VwczogeyBtaW5sZW5ndGg6IDMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEpTT04gZ8OpbsOpcsOpcyA6XG4gICAgZGlyQ2FjaGVHcm91cHMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL2dyb3Vwc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbnMgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3F1ZXN0aW9uc1wiLFxuICAgIGRpckNhY2hlVGFncyA6IFwiZGF0YXMvcXVlc3Rpb25uYWlyZXMvdGFnc1wiLFxuICAgIGRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyA6IFwiZGF0YXMvdXNlcnMvcXVlc3Rpb25uYWlyZXNcIixcbiAgICAvLyBFbXBsYWNlbWVudCBkZXMgZmljaGllcnMgSFRNTCBnw6luw6lyw6lzIDpcbiAgICBkaXJIVE1MR3JvdXBzIDogXCJmcm9udC9wdWJsaWMvcXVpei9ncFwiLFxuICAgIGRpckhUTUxRdWVzdGlvbm5haXJlcyA6IFwiZnJvbnQvcHVibGljL3F1aXpcIixcbiAgICBkaXJIVE1MTmV3cyA6IFwiZnJvbnQvcHVibGljL3F1aXpzXCIsXG4gICAgZGlySFRNTFRhZ3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIC8vIElkZW0gbWFpcyBwb3VyIHVybHMgOlxuICAgIGRpcldlYkdyb3VwcyA6IFwicXVpei9ncFwiLFxuICAgIGRpcldlYlF1ZXN0aW9ubmFpcmVzIDogXCJxdWl6XCIsXG4gICAgZGlyV2ViTmV3cyA6IFwicXVpenMvXCIsXG4gICAgZGlyV2ViVGFncyA6IFwicXVpenMvXCIsXG4gICAgLy8gbGltaXRlIGRlcyByw6lzdWx0YXQgZHUgbW90ZXVyIGRlIHJlY2hlcmNoZSwgcXVhbmQgZGVtYW5kZSBkZSByw6lzdWx0YXRzIGF1IGhhc2FyZCA6XG4gICAgbmJSYW5kb21SZXN1bHRzIDogMyxcbiAgICAvKiBWYWxldXJzIGVuIGZhaXQgZMOpZmluaWVzIGRhbnMgaW5zdGFuY2UuanMgZG9uYyDDoCBzdXBwcmltZXIgcXVhbmQgcGx1cyB1dGlsaXPDqWVzIGFpbGxldXJzIDogKi9cbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIG5iVGFnc01pbjogMCxcbiAgICBuYlRhZ3NNYXg6IDAsIC8vIDAgPSBub3QgbWF4ICAgIFxufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gQVBJJ3JvdXRlcyAoYWZ0ZXIgXCJhcGlVcmxcIiBkZWZpbmVkIGluIGluc3RhbmNlLmpzKVxuICAgIHVzZXJSb3V0ZXM6IFwiL3VzZXJcIixcbiAgICBjaGVja0RlbGV0ZUxpbmtSb3V0ZTogXCIvY29uZmlybWRlbGV0ZS9cIiwgICBcbiAgICBjaGVja0lmSXNFbWFpbGZyZWVSb3V0ZTogXCIvaXNlbWFpbGZyZWVcIixcbiAgICBjaGVja0xvZ2luUm91dGU6IFwiL2NoZWNrbG9naW4vXCIsXG4gICAgY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZTogXCIvY29uZmlybW5ld2xvZ2luL1wiLFxuICAgIGNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZTogXCIvdmFsaWRhdGlvbi9cIixcbiAgICBjb25uZWN0aW9uUm91dGU6IFwiL2xvZ2luXCIsXG4gICAgY29ubmVjdGlvbldpdGhMaW5rUm91dGU6IFwiL2NoZWNrbG9naW5saW5rXCIsXG4gICAgY3JlYXRlVXNlclJvdXRlOiBcIi9jcmVhdGVcIixcbiAgICBnZXRBZG1pblN0YXRzOiBcIi9nZXRhZG1pbnN0YXRzL1wiLFxuICAgIGdldEdvZENoaWxkczogXCIvZ2V0Z29kY2hpbGRzL1wiLCAgICBcbiAgICBnZXRHb2RmYXRoZXJSb3V0ZTogXCIvZ2V0Z29kZmF0aGVyaWRcIixcbiAgICBnZXRMb2dpbkxpbmtSb3V0ZTogXCIvZ2V0bG9naW5saW5rXCIsXG4gICAgZ2V0UGF5bWVudHM6IFwiL3BheW1lbnQvZ2V0Zm9yb25ldXNlci9cIixcbiAgICBnZXRVc2VySW5mb3M6IFwiL2dldC9cIixcbiAgICBnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGU6IFwiL2dldHVzZXJzcXVlc3Rpb25uYWlyZXMvXCIsLy8gbGVzIHF1ZXN0aW9ubmFpcmVzIGF1eHF1ZWxzIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgZXUgYWNjw6hzIHZpYSBzb24gYWJvbm5lbWVudCAgICBcbiAgICBzZWFyY2hVc2VyUm91dGU6IFwiL3NlYXJjaC9cIixcbiAgICBzaWdudXBDb21wbGV0aW9uUm91dGU6IFwiL3NpZ251cGNvbXBsZXRpb24vXCIsXG4gICAgc3Vic2NyaWJlUm91dGU6IFwiL3NpZ251cFwiLFxuICAgIHVuc3Vic2NyaWJlUm91dGU6IFwiL3N1YnNjcmlwdGlvbi9zdG9wL1wiLFxuICAgIHVwZGF0ZVVzZXJJbmZvczogXCIvbW9kaWZ5L1wiLFxuICAgIHZhbGlkYXRlVXNlclJvdXRlOiBcIi92YWxpZGF0ZS9cIixcbiAgICAvLyBmb3JtcyA6IMOgIGNvbXBsw6l0ZXIgYXZlYyB2YWxldXJzIHBhciBkw6lmYXV0LCBldGMuIGNmIG1vZMOobGVcbiAgICBuYW1lOiB7IG1heGxlbmd0aDogNzAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgZW1haWw6IHsgbWF4bGVuZ3RoOiAyNTUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgcGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIsIHJlcXVpcmVkOiB0cnVlIH0sIC8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JjcnlwdCNzZWN1cml0eS1pc3N1ZXMtYW5kLWNvbmNlcm5zXG4gICAgbmV3UGFzc3dvcmQ6IHsgbWlubGVuZ3RoOiA4LCBtYXhsZW5ndGg6NzIgfSxcbiAgICBjb2RlR29kZmF0aGVyOiB7IG1heGxlbmd0aDogMjU1IH0sXG4gICAgY2d1T2s6IHsgdmFsdWU6IFwidHJ1ZVwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHNlYXJjaDogeyBtaW5sZW5ndGg6IDEsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgdGltZURpZmZlcmVuY2VNaW46IC03MjAsXG4gICAgdGltZURpZmZlcmVuY2VNYXg6IDg0MCxcbiAgICAvLyBKU09OIGRpclxuICAgIGRpckNhY2hlVXNlcnMgOiBcImRhdGFzL3VzZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL2Fuc3dlcnNcIixcbiAgICBkaXJDYWNoZVVzZXJzV2l0aG91dEFuc3dlcnMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzL3dpdGhvdXRcIlxufTtcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9mci9nZW5lcmFsXCI6IFwiLi4vbGFuZy9mci9nZW5lcmFsLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvZ2VuZXJhbCRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvdXNlclwiOiBcIi4uL2xhbmcvZnIvdXNlci5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL3VzZXIkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFkZEJ0blR4dDogXCJBam91dGVyXCIsXG4gICAgYWRkT2tNZXNzYWdlIDogXCJMZXMgZG9ubsOpZXMgb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIixcbiAgICBhbGVydE5ld1dpbmRvdzogXCJub3V2ZWxsZSBmZW7DqnRyZVwiLFxuICAgIGJhZFVybCA6IFwiVGVudGF0aXZlIGQnYWNjw6hzIMOgIHVuZSBwYWdlIG4nZXhpc3RhbnQgcGFzIDpcIixcbiAgICBidG5MaW5rVG9RdWVzdGlvbm5haXJlIDogXCJBZmZpY2hlciAhXCIsXG4gICAgYnRuUHJvcG9zZUNvbm5lY3Rpb246IFwiSmUgbWUgY29ubmVjdGUuXCIsXG4gICAgYnRuUHJvcG9zZVN1YnNjcmliZTogXCJKZSBjcsOpZSBtb24gY29tcHRlLlwiLFxuICAgIGJ0blNob3dPbldlYlNpdGU6IFwiTGlyZSBsYSBzdWl0ZSBzdXIgI1NJVEVfTkFNRVwiLFxuICAgIGRlbGV0ZUJ0blR4dDogXCJTdXBwcmltZXJcIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZSA6IFwiTGEgc3VwcHJlc3Npb24gZGUgbCdlbnJlZ2lzdHJlbWVudCAjSUQgYSDDqWNob3XDqS5cIixcbiAgICBkZWxldGVPa01lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCIsXG4gICAgZmFpbEF1dGggOiBcIkVycmV1ciBkJ2F1dGhlbnRpZmljYXRpb24uXCIsXG4gICAgZmFpbEF1dGhDcm9uIDogXCJUZW50YXRpdmUgZGUgbGFuY2VtZW50IGQndW4gY3JvbiBzYW5zIGxlIGJvbiB0b2tlbi5cIixcbiAgICBmYWlsQXV0aEhlYWRlciA6IFwiQWJzZW5jZSBkZSBoZWFkZXIgQXV0aG9yaXphdGlvbi5cIixcbiAgICBmYWlsQXV0aElkIDogXCJJZGVudGlmaWFudCBub24gdmFsaWRlIDogXCIsXG4gICAgZmFpbEF1dGhUb2tlbiA6IFwiVG9rZW4gaW52YWxpZGUgb3UgdXRpbGlzYXRldXIgbm9uIHRyb3V2w6kuXCIsXG4gICAgbmVlZGVkUGFyYW1zIDogXCJEZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIG1hbnF1YW50cyBzb250IG1hbnF1YW50cy5cIixcbiAgICBuZXh0UGFnZSA6IFwiUGFnZSBzdWl2YW50ZVwiLFxuICAgIG5vdEFsbG93ZWQgOiBcIlZvdXMgbidhdmV6IHBhcyBsZXMgZHJvaXRzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIGFjdGlvbi5cIixcbiAgICBub3RSZXF1aXJlZCA6IFwiRmFjdWx0YXRpZi5cIixcbiAgICBub3RWYWxpZEZvcm1hdCA6IFwiRm9ybWF0IG5vbiB2YWxpZGUuXCIsXG4gICAgcHJldmlvdXNQYWdlIDogXCJQYWdlIHByw6ljw6lkZW50ZVwiLFxuICAgIHNlcnZlckVycm9yIDogXCJEw6lzb2zDqS4gVW5lIGVycmV1ciBpbXByw6l2dWUgZXN0IHN1cnZlbnVlLiBTaSBjZWxhIHBlcnNpc3RlLCBuJ2jDqXNpdGV6IMOgIHByw6l2ZW5pciBsJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuXCIsXG4gICAgc2VydmVyRXJyb3JBZG1pbiA6IFwiQnVnIGRlIGwnYXBwbGljYXRpb24gOlwiLFxuICAgIHNpdGVIVE1MVGl0bGUgOiBcIldpa2lMZXJuaSA6IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBsaWJlcnTDqVwiLFxuICAgIHNpdGVNZXRhRGVzY3JpcHRpb24gOiBcIkF2ZWMgV2lraUxlcm5pLCB2b3VzIGFwcHJlbmV6IHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgY2hvc2VzLiBWb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuIERlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuXCIsXG4gICAgc2NyaXB0VGltaW5nQWxlcnQgOiBcIioqKiBTY3JpcHQgbGVudCA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc2NyaXB0VGltaW5nSW5mbyA6IFwiRHVyw6llIGRlIGxhIHLDqXBvbnNlIDogU0NSSVBUX1RJTUlORyBtaWxsaXNlY29uZGVzLCByb3V0ZSA6IFNDUklQVF9VUkxcIixcbiAgICBzdGF0c0FkbWluIDogXCJEdXJhbnQgbGVzIGRlcm5pw6hyZXMgMjRoIDogTkJfVVNFUlNfMjRIIGNvbXB0ZXMgb250IMOpdMOpIGNyw6nDqXMsIE5CX1NVQlNDUklQVElPTlNfMjRIIHZhbGlkw6lzIGV0IE5CX1VTRVJTX0RFTEVURURfMjRIIHN1cHByaW3DqXMuIE5CX0FOU1dFUlNfMjRIIHLDqXBvbnNlcyBhdXggcXVpenMgb250IMOpdMOpIGVucmVnaXN0csOpZXMuPGJyPkVuIHRvdXQsIGlsIHkgYSA6IE5CX1VTRVJTX1RPVCBjb21wdGVzLCBkb250IE5CX1NVQlNDUklQVElPTlNfVE9UIHZhbGlkw6lzIGV0IE5CX1NVQlNDUklQVElPTlNfUFJFTUlVTSBjb21wdGVzIHByw6ltaXVtLiBOQl9BTlNXRVJTX1RPVCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5QYXJtaSBsZXMgTkJfVVNFUlNfREVMRVRFRF9UT1QgY29tcHRlcyBzdXBwcmltw6lzLCBOQl9VU0VSU19ERUxFVEVEX1ZBTElERUQgYXZhaWVudCB2YWxpZMOpIGxldXIgY29tcHRlIGV0IE5CX1VTRVJTX0RFTEVURURfUFJFTUlVTSBhdmFpZW50IHNvdXNjcml0IHVuIGNvbXB0ZSBwcsOpbWl1bS5cIixcbiAgICBzdWJzY3JpcHRpb25DYWxsOiBcIkluc2NyaXZlei12b3VzICFcIixcbiAgICB1cGRhdGVCdG5UeHQ6IFwiTW9kaWZpZXJcIixcbiAgICB1cGRhdGVPa01lc3NhZ2UgOiBcIkxhIG1pc2Ugw6Agam91ciDDoCBqb3VyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqWUuXCJcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFscmVhZHlDb25uZWN0ZWQ6IFwiVm91cyDDqnRlcyBkw6lqw6AgY29ubmVjdMOpIGF1IHNpdGUgIVwiLFxuICAgIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBsaWVuIGRlIGNvbmZpcm1hdGlvbiBuZSBzZW1ibGUgcGFzIHZhbGlkZSBvdSBiaWVuIGlsIGEgZXhwaXLDqS4gVm91cyBwb3V2ZXogZW4gcmVjZXZvaXIgdW4gbm91dmVhdSA8YSBocmVmPScjVVJMJz5lbiBjbGlxdWFudCBpY2k8L2E+LlwiLFxuICAgIGJhZFBhc3N3b3JkOiBcIkF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBuZSBjb3JyZXNwb25kIGF1eCBpbmZvcm1hdGlvbnMgc2Fpc2llcy5cIixcbiAgICBieWVieWVNZXNzYWdlOiBcIlNpIHZvdXMgdm95ZXogY2UgbWVzc2FnZSwgYydlc3QgcXVlIHZvdHJlIGTDqWNvbm5leGlvbiBzJ2VzdCBiaWVuIGTDqXJvdWzDqWUuPGJyPsOAIGJpZW50w7R0ICFcIiwgXG4gICAgY29ubmVjdGlvbk9rOiBcIkNvbm5leGlvbiByw6l1c3NpZS5cIixcbiAgICBjcmVhdGlvbk9rTWVzc2FnZTogXCJMZSBub3V2ZWwgdXRpbGlzYXRldXIgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpLlwiLFxuICAgIGNyb25EZWxldGVVbnZhbGlkZWRVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIG5vbiB2YWxpZMOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVGYWlsTWVzc2FnZTogXCJUZW50YXRpdmUgZGUgc3VwcHJlc3Npb24gZCd1biB1dGlsaXNhdGV1ciBpbmV4aXN0YW50IDogXCIsXG4gICAgZGVsZXRlSW5hY3RpdmVVc2Vyc01lc3NhZ2U6IFwiIGNvbXB0ZXMgdXRpbGlzYXRldXJzIGluYWN0aWZzIG9udCDDqXTDqSBzdXBwcmltw6lzLlwiLFxuICAgIGRlbGV0ZU9rTWVzc2FnZTogXCJMJ3V0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuXCIsXG4gICAgZW1haWxOb3RGb3VuZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbidhIMOpdMOpIHRyb3V2w6kgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBmYWlsQm90VGVzdDogXCJVbiBwcm9ibMOobWUgYSDDqXTDqSByZW5jb250csOpIGR1cmFudCB2b3RyZSBpbnNjcmlwdGlvbi4gRW4gY2FzIGRlIGRpZmZpY3VsdMOpLCBuJ2jDqXNpdGV6IHBhcyBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIGZhaWxCb3RUZXN0TG9nOiBcIlVuZSBpbnNjcmlwdGlvbiBhIMOpdMOpIGJsb3F1w6llLCBwYXJjZSBxdWUgbGUgY2hhbXAgZW1haWwyIMOpdGFpdCByZW5zZWlnbsOpIGF2ZWMgOiBcIixcbiAgICBmb3Jtc0VtYWlsTGFiZWw6IFwiRS1tYWlsIDpcIixcbiAgICBmb3Jtc0VtYWlsUGxhY2Vob2xkZXI6IFwiVm90cmUgYWRyZXNzZSBlLW1haWxcIixcbiAgICBmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyOiBcIlNpIHZvdXMgdm95ZXogY2UgY2hhbXAsIGxhaXNzZXotbGUgdmlkZVwiLC8vY2hhbXAgcXVpIG5lIGRldnJhaXQgcGFzIMOqdHJlIHZpc2libGUgcGFyIGRlcyBodW1haW5zXG4gICAgZm9ybXNDR1VPa0xhYmVsOiBcIkonYWNjZXB0ZSA8YSBocmVmPSNsaW5rIHRhcmdldD1cXFwiX2JsYW5rXFxcIiByZWw9XFxcIm5vb3BlbmVyXFxcIiB0aXRsZT1cXFwiw4AgbGlyZSA6KVxcXCI+bGVzIENvbmRpdGlvbnMgR8OpbsOpcmFsZSBkJ1V0aWxpc2F0aW9uPC9hPiBkdSBzaXRlIChyZXF1aXMpLlwiLFxuICAgIGZvcm1zU3VibWl0VHh0OiBcIkplIG0nYWJvbm5lICFcIixcbiAgICBnb2RmYXRoZXJGb3VuZDogXCJWb3RyZSBcXFwicGFycmFpblxcXCIgYSBiaWVuIMOpdMOpIHRyb3V2w6kuIENldHRlIHBlcnNvbm5lIHNlcmEgYXZlcnRpZSBxdWUgdm91cyBsJ2F2ZXogZMOpc2lnbsOpZS5cIixcbiAgICBnb2RmYXRoZXJOb3RGb3VuZDogXCJEw6lzb2zDqSBtYWlzIGF1Y3VuIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2UgY29kZSAvIGUtbWFpbCBkZSBwYXJyYWluYWdlIDooXCIsXG4gICAgaW5mb3NBZG1pbkdvZGZhdGhlcjogXCJDZXQgdXRpbGlzYXRldXIgYSDDqXTDqSBwYXJyYWluw6kgcGFyIFwiLFxuICAgIGluZm9zQWRtaW5OYkdvZENoaWxkczogXCJTZXMgI05CIGZpbGxldWxzIDogXCIsXG4gICAgaW5mb3NVc2VyRm9yQWRtaW46IFwiQ2V0IHV0aWxpc2F0ZXVyIChpZDogSURfVVNFUikgYSA8Yj5jcsOpw6kgc29uIGNvbXB0ZSBsZSBEQVRFX0NSRUE8L2I+LCBsYSBkZXJuacOocmUgbWlzZSDDoCBqb3VyIGRhdGFudCBkdSBEQVRFX1VQREFURS48YnI+PGI+RGF0ZSBkZSBzYSBkZXJuacOocmUgY29ubmV4aW9uIDogREFURV9DT05ORUNUSU9OLjwvYj5cIixcbiAgICBpbmZvc1VzZXJOYkdvZENoaWxkczogXCJWb2ljaSBsZXMgI05CIHV0aWxpc2F0ZXVyKHMpIGluc2NyaXQocykgZW4gdm91cyBkw6lzaWduYW50IGNvbW1lIFxcXCJwYXJyYWluXFxcIiA6IFwiLFxuICAgIGluZm9zVXNlck5vR29kY2hpbGRzOiBcIlBvdXIgbCdpbnN0YW50LCBhdWN1bmUgcGVyc29ubmUgbmUgcydlc3QgaW5zY3JpdGUsIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIuXCIsXG4gICAgbWFpbERlbGV0ZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbERlbGV0ZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgY29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxEZWxldGVMaW5rQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLlwiLFxuICAgIG1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBzdXBwcmVzc2lvbiBuJ2VzdCBwYXMgdmFsaWRlIG91IGFsb3JzIGlsIGEgZXhwaXLDqS5cIixcbiAgICBtYWlsRGVsZXRlTGlua01lc3NhZ2U6IFwiVm90cmUgZGVtYW5kZSBkZSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLiBNZXJjaSBkZSBjbGlxdWVyIHNhbnMgdGFyZGVyIHN1ciBsZSBsaWVuIHF1aSB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbCBwb3VyIGNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlTGlua09rTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgYSBiaWVuIMOpdMOpIHN1cHByaW3DqS4gTWVyY2kgZCdhdm9pciB1dGlsaXPDqSBub3Mgc2VydmljZXMuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtUeHQgOiBcIkNvbmZpcm1lci5cIixcbiAgICBtYWlsRGVsZXRlU3ViamVjdCA6IFwiQ29uZmlybWVyIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOjwvcD5cIixcbiAgICBtYWlsTG9naW5MaW5rQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsTG9naW5MaW5rTWVzc2FnZSA6IFwiVW4gbGllbiBkZSBjb25uZXhpb24gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHN1ciB2b3RyZSBhZHJlc3NlIGUtbWFpbC4gTmUgdGFyZGV6IHBhcyDDoCBsJ3V0aWxpc2VyLCBjYXIgaWwgbidlc3QgdmFsYWJsZSBxdWUgZHVyYW50ICpUSU1JTkcqICFcIixcbiAgICBtYWlsTG9naW5MaW5rU3ViamVjdCA6IFwiVm90cmUgbGllbiBkZSBjb25uZXhpb24uXCIsXG4gICAgbWFpbExvZ2luTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuPGJyPlNpIGRhbnMgbCdhdmVuaXIgY2V0dGUgcGVyc29ubmUgc291c2NyaXQgdW4gYWJvbm5lbWVudCBwcsOpbWl1bSwgdm90cmUgcHJvcHJlIGFib25uZW1lbnQgc2VyYSBwcm9sb25nw6kgZGUgMzAgam91cnMuPC9wPjxwPkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhPC9wPlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcbkdyw6JjZSDDoCB2b3VzLCB1biBub3V2ZWwgdXRpbGlzYXRldXIgKEVNQUlMKSB2aWVudCBkZSBzJ2luc2NyaXJlIHN1ciBOT01fU0lURS5cXG5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLlxcbkVuY29yZSBtZXJjaSBldCDDoCBiaWVudMO0dCAhXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCA6IFwiTWUgY29ubmVjdGVyIMOgIG1vbiBjb21wdGUuXCIsXG4gICAgbWFpbFRoYW5rR29kZmF0aGVyU3ViamVjdCA6IFwiTWVyY2kgIVwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24sIGNsaXF1ZXogc3VyIGxlIGxpZW4gY2ktZGVzc291cyBzYW5zIHRhcmRlci48L3A+XCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua01lc3NhZ2U6IFwiQ2VwZW5kYW50LCB2b3VzIGF2ZXogbW9kaWZpw6kgYXUgbW9pbnMgdW4gZGUgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gKGUtbWFpbCBldC9vdSBtb3QgZGUgcGFzc2UpIGV0IDxiPnZvdXMgZGV2ZXogY2xpcXVlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZXMgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSAoTkVXX0VNQUlMKSBwb3VyIHZhbGlkZXIgY2UgY2hhbmdlbWVudDwvYj4uPGJyPkVuIGF0dGVuZGFudCwgbWVyY2kgZGUgY29udGludWVyIMOgIHV0aWxpc2VyIHZvcyBhbmNpZW5zIGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5MaW5rVHh0IDogXCJWYWxpZGVyLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbk9rTWVzc2FnZTogXCJMYSBtaXNlIMOgIGpvdXIgZGUgdm9zIGlkZW50aWZpYW50cyBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIG1haWxVcGRhdGVMb2dpblN1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm9zIG5vdXZlYXV4IGlkZW50aWZpYW50cy5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keUhUTUwgOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgZGFucyBsZXMgMjRoLjwvcD5cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtTQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuUG91ciB2YWxpZGVyIGV0IGNvbXBsw6l0ZXIgdm90cmUgaW5zY3JpcHRpb24sIG1lcmNpIGRlIGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudCBkYW5zIGxlcyAyNGggOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU3ViamVjdCA6IFwiTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvblwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1R4dCA6IFwiVmFsaWRlciBtb24gY29tcHRlLlwiLFxuICAgIG1haWxWYWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBpbnNjcmlwdGlvbiBlc3QgYmllbiBlbnJlZ2lzdHLDqWUuXFxuUG91ciBsYSBmaW5hbGlzZXIsIG1lcmNpIGRlIGNsaXF1ZXIgZGFucyBsZXMgMjQgSCBzdXIgbGUgbGllbiBkZSBjb25maXJtYXRpb24gcXVpIHZpZW50IGQnw6p0cmUgZW52b3nDqSDDoCB2b3RyZSBhZHJlc3NlIGUtbWFpbCAoI0VNQUlMKS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPjxicj5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgPGI+RU1BSUw8L2I+Ljxicj48YnI+SmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgPGI+RU1BSUw8L2I+IMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIDxiPnBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiA8aT5zcGFtPC9pPjwvYj4uPGJyPjxicj5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci48YnI+PGJyPlBvdXIgY2UgZmFpcmUsIHV0aWxpc2V6IGxlIGxpZW4gY2ktZGVzc291cy48YnI+PGJyPsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblZvdXMgdmVuZXogZGUgdmFsaWRlciB2b3RyZSBpbnNjcmlwdGlvbiDDoCBOT01fU0lURS4gTWVyY2kgZXQgYmllbnZlbnVlICFcXG5cXG5TaSB2b3VzIGF2ZXogbGEgbW9pbmRyZSBxdWVzdGlvbiBvdSBzdWdnZXN0aW9uIGNvbmNlcm5hbnQgTk9NX1NJVEUsIG4naMOpc2l0ZXogcGFzIMOgIG1lIGNvbnRhY3RlciBlbiDDqWNyaXZhbnQgw6AgRU1BSUwuXFxuXFxuSmUgdm91cyBjb25zZWlsbGUgZCdhaWxsZXVycyBkJ2Fqb3V0ZXIgRU1BSUwgw6Agdm90cmUgY2FybmV0IGQnYWRyZXNzZXMgcG91ciDDqXZpdGVyIHF1ZSBsZXMgcHJvY2hhaW5zIGVudm9pcyBkZSBOT01fU0lURSBuJ2Fycml2ZW50IGVuIFxcXCJzcGFtXFxcIi5cXG5cXG5QYXIgYWlsbGV1cnMsIHBvdXIgZ8OpcmVyIHZvdHJlIGFib25uZW1lbnQsIGFjY8OpZGVyIMOgIHZvcyBpbmZvcm1hdGlvbnMgb3UgZW5jb3JlIGNoZXJjaGVyIHBsdXMgZmFjaWxlbWVudCBwYXJtaSBsZSBjb250ZW51IGR1IHNpdGUsIHZvdXMgcG91dmV6IMOgIHRvdXQgbW9tZW50IHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSB1dGlsaXNhdGV1ci5cXG5cXG5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIHN1aXZhbnQgOiBMSU5LX1VSTFxcblxcbsOAIGJpZW50w7R0IHN1ciBOT01fU0lURS5cIixcbiAgICBtYWlsV2VsY29tZUxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxXZWxjb21lU3ViamVjdCA6IFwiQmllbnZlbnVlICFcIixcbiAgICBuZWVkQmVDb25uZWN0ZWQ6IFwiVm91cyBkZXZleiDDqnRyZSBjb25uZWN0w6kgcG91ciBhY2PDqWRlciDDoCBjZXR0ZSBwYWdlLlwiLFxuICAgIG5lZWRDaG9vc2VMb2dpbldheTogXCJWb3VzIGRldmV6IHNvaXQgc2Fpc2lyIHZvdHJlIG1vdCBkZSBwYXNzZSwgc29pdCBjb2NoZXIgbGEgY2FzZSB2b3VzIHBlcm1ldHRhbnQgZGUgcmVjZXZvaXIgdW4gbGllbiBkZSBjb25uZXhpb24gcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlwiLFxuICAgIG5lZWRLbm93TmV3c2xldHRlck9rIDogXCJJbCBmYXV0IHNhdm9pciBzaSBsJ3V0aWxpc2F0ZXVyIGFjY2VwdGUgb3UgcmVmdXNlIGRlIHJlY2V2b2lyIGxhIG5ld3NsZXR0ZXIuXCIsXG4gICAgbmVlZExhbmd1YWdlIDogXCJJbCBtYW5xdWUgbGUgY29kZSBsYW5ndWUuXCIsXG4gICAgbmVlZExvbmdQYXNzV29yZCA6IFwiTWVyY2kgZGUgZm91cm5pciB1biBtb3QgZGUgcGFzc2UgZCdhdSBtb2lucyBNSU5fTEVOR1RIIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWRNYXhUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGFqb3V0ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgODQwLlwiLFxuICAgIG5lZWRNaW5UaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBmb3VybmlyIHVuIG5vbWJyZSBkZSBtaW51dGVzIMOgIGVubGV2ZXIgw6AgbCdoZXVyZSBHTVQgbmUgZMOpcGFzc2FudCBwYXMgNzIwLlwiLFxuICAgIG5lZWROYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdOYW1lOiBcIk1lcmNpIGRlIGNob2lzaXIgdW4gbm9tIGQndXRpbGlzYXRldXIgbmUgY29tcHRhbnQgcGFzIHBsdXMgZGUgNzAgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZE5vdFRvb0xvbmdFbWFpbDogXCJNZXJjaSBkZSBzYWlzaXIgdW5lIGFkcmVzc2UgZS1tYWlsIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDI1NSBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlLlwiLFxuICAgIG5lZWRTTVRQIDogXCJJbCBtYW5xdWUgbGUgc2VydmV1ciBTTVRQLlwiLFxuICAgIG5lZWRTTVRQTm90Rm91bmQgOiBcIklsIG1hbnF1ZSB1biBzZXJ2ZXVyIFNNVFAgdmFsaWRlLlwiLFxuICAgIG5lZWRTdGF0dXMgOiBcIklsIG1hbnF1ZSBsZSBzdGF0dXQuXCIsXG4gICAgbmVlZFRpbWVEaWZmZXJlbmNlIDogXCJJbCBmYXV0IGNvbm5hw650cmUgbGUgbm9tYnJlIGRlIG1pbnV0ZXMgZHUgZMOpY2FsYWdlIGhvcmFpcmUuXCIsXG4gICAgbmVlZFVHQ09rIDogXCJNZXJjaSBkJ2FjY2VwdGVyIGxlcyBDR1UgcG91ciBjcsOpZXIgdm90cmUgY29tcHRlLlwiLFxuICAgIG5lZWRVbmlxdWVFbWFpbDogXCJMJ2FkcmVzc2UgZS1tYWlsIHF1ZSB2b3VzIGF2ZXogc2Fpc2llIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBvdXIgdW4gY29tcHRlIHV0aWxpc2F0ZXVyLiBTaSB2b3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZSwgPGEgaHJlZj0nLyNVUkwnPmNsaXF1ZXotaWNpIHBvdXIgdm91cyBjb25uZWN0ZXI8L2E+LlwiLFxuICAgIG5lZWRWYWxpZGF0aW9uVG9Mb2dpbiA6IFwiVm91cyBkZXZleiBkJ2Fib3JkIHZhbGlkZXIgdm90cmUgY29tcHRlIGF2YW50IGRlIHBvdXZvaXIgdm91cyBjb25uZWN0ZXIuIFBvdXIgY2UgZmFpcmUsIHVuIG5vdXZlYXUgbGllbiB2aWVudCBkZSB2b3VzIMOqdHJlIGVudm95w6kgcGFyIGUtbWFpbC5cIixcbiAgICBuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUgOiBcIkxhIGRhdGUgZGUgZGVybmnDqHJlIGNvbm5leGlvbiBuJ2VzdCBwYXMgdmFsaWRlLlwiLFxuICAgIHBhc3N3b3JkQ29waWVkOiBcIkxlIG1vdCBkZSBwYXNzZSBnw6luw6lyw6kgYSDDqXTDqSBjb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVyIGRlIHZvdHJlIG9yZGluYXRldXIgKG91IG1vYmlsZSkuIFZvdXMgcG91dmV6IGxlIFxcXCJjb2xsZXJcXFwiIG/DuSB2b3VzIGxlIHNvdWhhaXRlei5cIixcbiAgICBzZWFyY2hVc2Vyc1dpdGhvdXRSZXN1bHQ6IFwiTCd1dGlsaXNhdGV1ciBuJ2EgcGFzIMOpdMOpIHRyb3V2w6kuXCIsXG4gICAgdG9vTWFueUxvZ2luRmFpbHMgOiBcIkTDqXNvbMOpIG1haXMgaWwgeSBhIGV1IHRyb3AgZGUgdGVudGF0aXZlcyBkZSBjb25uZXhpb24gaW5mcnVjdHVldXNlcyBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsLiBWb3VzIGRldmV6IGF0dGVuZHJlIE1JTlVURVMgbWludXRlcyBwb3VyIGVzc2F5ZXIgZGUgbm91dmVhdS5cIixcbiAgICB1cGRhdGVkRmFpbGVkR29kZmF0aGVyTm90Rm91bmQgOiBcIkwnaWRlbnRpZmlhbnQgZm91cm5pIHBvdXIgbGUgcGFycmFpbiBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIHV0aWxpc2F0ZXVyLlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIG4nYSBwdSDDqnRyZSBlbnJlZ2lzdHLDqWUsIGNhciBlbGxlIG4nYSBwYXMgdW4gZm9ybWF0IGNvcnJlY3QuXCIsXG4gICAgdXBkYXRlZE5lZWRHb29kR29kZmF0aGVyIDogXCJNYWlzIGxlIG5vdXZlYXUgY29kZSBwYXJyYWluIG4nYSBwdSDDqnRyZSByZXRlbnUsIGNhciBpbCBuZSBjb3JyZXNwb25kIMOgIGF1Y3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBvdSDDoCBsJ3V0aWxpc2F0ZXVyIGx1aS1tw6ptZS5cIixcbiAgICB1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIDogXCJNYWlzIGxhIG5vdXZlbGxlIGFkcmVzc2UgZS1tYWlsIHNhaXNpZSAoTkVXX0VNQUlMKSBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGF1dHJlIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkTmVlZFZhbGlkYXRlZFVzZXI6IFwiTCd1dGlsaXNhdGV1ciBxdWUgdm91cyBzb3VoYWl0ZXogbW9kaWZpZXIgbidleGlzdGUgcGFzL3BsdXMgb3UgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLlwiLFxuICAgIHVwZGF0ZWRPa01lc3NhZ2U6IFwiVm9zIGluZm9ybWF0aW9ucyBvbnQgYmllbiDDqXTDqSBtaXNlcyDDoCBqb3VyLlwiLFxuICAgIHZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZTogXCJJbCBzZW1ibGUgcXVlIHZvdXMgYXlleiBkw6lqw6AgdmFsaWTDqSB2b3RyZSBjb21wdGUuIFZvdXMgcG91dmV6IHZvdXMgeSBjb25uZWN0ZXIgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2VBZG1pbjogXCJDZSBjb21wdGUgYSBkw6lqw6Agw6l0w6kgdmFsaWTDqS5cIixcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogXCJWb3RyZSBjb21wdGUgdmllbnQgYmllbiBkJ8OqdHJlIHZhbGlkw6kuIE1lcmNpIGV0IGJpZW52ZW51ZSAhPGJyPlZvdXMgcG91dmV6IGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSB2b3RyZSBhYm9ubmVtZW50IGNpLWRlc3NvdXMuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VBZG1pbjogXCJMZSBjb21wdGUgYSBiaWVuIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgd2VsY29tZU1lc3NhZ2U6IFwiQmllbnZlbnVlICNOQU1FICFcIlxufTsiLCIvLyBRdWVscXVlcyBmb25jdGlvbnMgdXRpbGVzIHBvdXIgbGVzIGNoYcOubmVzXG5cbmNsYXNzIFRvb2xcbntcbiAgICBzdGF0aWMgaXNFbXB0eShteVZhcilcbiAgICB7XG4gICAgICAgIGlmKG15VmFyPT09dW5kZWZpbmVkIHx8IG15VmFyPT09bnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIG15VmFyKz1cIlwiOy8vIHNpIGF1dHJlIGNob3NlIHF1J3VuZSBjaGHDrm5lIGVudm95w6kuLi5cbiAgICAgICAgICAgIG15VmFyPW15VmFyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKG15VmFyPT09XCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHRyaW1JZk5vdE51bGwobXlTdHJpbmcpXG4gICAge1xuICAgICAgICBpZihUb29sLmlzRW1wdHkobXlTdHJpbmcpKVxuICAgICAgICAgICAgbXlTdHJpbmc9bnVsbDtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVN0cmluZys9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVN0cmluZz1teVN0cmluZy50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG15U3RyaW5nO1xuICAgIH1cblxuXG4gICAgc3RhdGljIHNob3J0ZW5JZkxvbmdlclRoYW4obXlTdHJpbmcsIG1heClcbiAgICB7XG4gICAgICAgIG15U3RyaW5nKz1cIlwiOy8vIGF1IGNhcyBvw7kgY2VsYSBuZSBzZXJhaXQgcGFzIHVuZSBjaGHDrm5lLi4uXG4gICAgICAgaWYobXlTdHJpbmcubGVuZ3RoID4gbWF4KVxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcuc3Vic3RyaW5nKDAsIChtYXgtMykpK1wi4oCmXCI7XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cbiAgICAvLyBzb3VyY2UgOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTYwNDE0MC9yZXBsYWNlLW11bHRpcGxlLXN0cmluZ3Mtd2l0aC1tdWx0aXBsZS1vdGhlci1zdHJpbmdzXG4gICAgc3RhdGljIHJlcGxhY2VBbGwobXlTdHJpbmcsIG1hcE9iailcbiAgICB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VFbHRzID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhtYXBPYmopLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XG4gICAgICAgIHJldHVybiBteVN0cmluZy5yZXBsYWNlKHJlcGxhY2VFbHRzLCAobWF0Y2hlZCkgPT5cbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIG1hcE9ialttYXRjaGVkXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZnIvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvT2JqZXRzX2dsb2JhdXgvTWF0aC9yYW5kb21cbiAgICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KVxuICAgIHtcbiAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gICAgICAgIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbiAgICB9XG5cbiAgICAvLyDDoCBjb21wbMOpdGVyIDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0ZV9mb3JtYXRfYnlfY291bnRyeVxuICAgIHN0YXRpYyBkYXRlRm9ybWF0KGRhdGVTdHJpbmcsIGxhbmc9XCJmclwiKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KGRhdGVTdHJpbmcpKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBteURhdGU9bmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICAgIGxldCBteURheT1teURhdGUuZ2V0RGF0ZSgpK1wiXCI7XG4gICAgICAgIGlmKG15RGF5Lmxlbmd0aD09PTEpXG4gICAgICAgICAgICBteURheT1cIjBcIitteURheTtcbiAgICAgICAgbGV0IG15TW91bnRoPShteURhdGUuZ2V0TW9udGgoKSsxKStcIlwiO1xuICAgICAgICBpZihteU1vdW50aC5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlNb3VudGg9XCIwXCIrbXlNb3VudGg7XG4gICAgICAgIGxldCBteVllYXI9bXlEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGlmKGxhbmc9PT1cImZyXCIpXG4gICAgICAgICAgICByZXR1cm4gbXlEYXkrXCIvXCIrbXlNb3VudGgrXCIvXCIrbXlZZWFyO1xuICAgICAgICBlbHNlIGlmIChsYW5nPT09XCJmb3JtXCIpLy8gMjAxNC0wMi0wOVxuICAgICAgICAgICAgcmV0dXJuIG15WWVhcitcIi1cIitteU1vdW50aCtcIi1cIitteURheTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG15TW91bnRoK1wiL1wiK215RGF5K1wiL1wiK215WWVhcjtcbiAgICB9XG5cbiAgICAvLyBPbiBlbmzDqHZlIHZvbG9udGFpcmVtZW50IGxlcyAwL08gcG91ciDDqXZpdGVyIGxlcyBjb25mdXNpb25zICFcbiAgICAvLyBFdCBtaWV1eCB2YXV0IGF1c3NpIGTDqWJ1dGVyIGV0IGZpbmlyIHBhciB1bmUgbGV0dHJlIHNpbXBsZS5cbiAgICBzdGF0aWMgZ2V0UGFzc3dvcmQgKG5iQ2FyTWluLCBuYkNhck1heClcbiAgICB7XG4gICAgICAgIGNvbnN0IG5iQ2FyPW5iQ2FyTWluK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoobmJDYXJNYXgtbmJDYXJNaW4pKTtcbiAgICAgICAgY29uc3QgbGV0dGVycz1cIkFCQ0RFRkdISUpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHl6XCI7XG4gICAgICAgIGNvbnN0IG90aGVycz1cIjEyMzQ1Njc4OSE/LiotXyVAJsOJw4DDiMOZ4oKsJMOCw4rDm8OOXCI7XG4gICAgICAgIGxldCBwYXNzd29yZD1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICBmb3IobGV0IGk9MTtpPChuYkNhci0xKTtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKChpICUgMikgPT09MSlcbiAgICAgICAgICAgICAgICBwYXNzd29yZCs9b3RoZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvdGhlcnMubGVuZ3RoKV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07ICAgXG4gICAgICAgIH1cbiAgICAgICAgcGFzc3dvcmQrPWxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmxldHRlcnMubGVuZ3RoKV07XG4gICAgICAgIHJldHVybiBwYXNzd29yZDtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVG9vbDsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vZGVmYXVsdC9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qc1wiLFxuXHRcIi4vd2lraWxlcm5pL2NvbmZpZy9mci5qc1wiOiBcIi4uL3ZpZXdzL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vdmlld3Mgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwuanMkXCI7IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCLDgCBwcm9wb3NcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2EtcHJvcG9zLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiIH0gfSxcbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQy5HLlUuXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jZ3UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5WLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d2Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgIF0sXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2U6IDEwLFxuICAgIHVzZXJIb21lUGFnZSA6IFwiYWNjdWVpbC5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZSA6IFwiYWRtaW4uaHRtbFwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgcXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXF1aXpzLmh0bWxcIixcbiAgICB1c2Vyc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tdXRpbGlzYXRldXJzLmh0bWxcIixcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMTAsXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHNpdGVTbG9nYW46IFwiQ3VsdGl2b25zIG5vdHJlIGphcmRpbiAhXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCJBdmVjIFdpa2lMZXJuaSB2b3VzIGFwcHJlbmV6IGNoYXF1ZSBqb3VyIGRlIG5vdXZlbGxlcyBjaG9zZXMuPGJyPkRlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHNvbnQgc8OpbGVjdGlvbm7DqXMgcG91ciB2b3VzIGV0IHNvbnQgc3VpdmlzIGQndW4gcXVpeiB2b3VzIHBlcm1ldHRhbnQgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgc2F2b2lyIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIFxcXCJqYXJkaW5cXFwiLlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBlbiBsaWJlcnTDqVwiLFxuICAgIGhvbWVQMjogXCJUb3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhICgqKSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwYXJ0YWfDqSBzdXIgV2lraUxlcm5pIHNvbnQgbGlicmVzLjxicj5Wb3VzIHBvdXZleiBsZXMgdXRpbGlzZXIsIGxlcyBtb2RpZmllciBldCBsZXMgZGlmZnVzZXIgc2Vsb24gdm90cmUgc291aGFpdC48YnI+U3VyIFdpa2lMZXJuaSwgcGFzIGRlIHB1YmxpY2l0w6ksIG5pIGRlIGNvbW1lcmNpYWxpc2F0aW9uIGRlIHZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMuPGJyPlZvdXMgcG91dmV6IHZlbmlyIHkgXFxcImN1bHRpdmVyIHZvdHJlIGphcmRpblxcXCIgZW4gdG91dGUgdHJhbnF1aWxsaXTDqS48YnI+PGJyPjxzbWFsbD48ZW0+KCopIEJpZW4gcXVlIHBhcnRhZ2VhbnQgc2VzIHZhbGV1cnMsIFdpa2lMZXJuaSBlc3QgdW4gcHJvamV0IGluZMOpcGVuZGFudCBkZSBsYSBmb25kYXRpb24gV2lraXDDqWRpYS48L2VtPjwvc21hbGw+XCIsXG4gICAgbmV3UXVlc3Rpb25uYWlyZXNUaXRsZTogXCJMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMgc3VyIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiTGlzdGUgZGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmkuXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5pID9cIixcbiAgICBleHBsYW5hdGlvblR4dDogXCJMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDogdm91cyBjb21tZW5jZXogcGFyIGxpcmUgbCdhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpLjxicj5QdWlzIHZvdXMgYWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlLiBWb3VzIG9idGVuZXogYWxvcnMgdm90cmUgcsOpc3VsdGF0IGltbcOpZGlhdGVtZW50Ljxicj48YnI+VG91dGVzIGxlcyByw6lwb25zZXMgc2UgdHJvdXZlbnQgZGFucyBsJ2FydGljbGUgcHJvcG9zw6kgw6AgbGEgbGVjdHVyZS4gPGI+Vm91cyDDqnRlcyBpY2kgcG91ciBhcHByZW5kcmUgZGUgbm91dmVsbGVzIGNob3NlczwvYj4sIG1haXMgbGlicmUgw6Agdm91cyBkJ2Vzc2F5ZXIgZCd5IHLDqXBvbmRyZSBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlF1YW5kIGxlIHN1amV0IHMneSBwcsOqdGUsIG5lIHZvdXMgw6l0b25uZXogcGFzIHNpIGNlcnRhaW5lcyBkZXMgcsOpcG9uc2VzIHByb3Bvc8OpZXMgcGV1dmVudCDDqnRyZSB1biBwZXUgZMOpY2Fsw6llcywgYWJzdXJkZXMuLi4gT24gcGV1dCBhcHByZW5kcmUgYXZlYyBsZSBzb3VyaXJlLCBub24gPyA6LSk8YnI+PGJyPlVuZSBmb2lzIHZvdHJlIHLDqXN1bHRhdCBvYnRlbnUsIGlsIHZvdXMgc2VyYSBwcm9wb3PDqSBkZSBjcsOpZXIgdW4gY29tcHRlIHBvdXIgbGUgc2F1dmVnYXJkZXIuPGJyPkNlIGNvbXB0ZSB2b3VzIHBlcm1ldHRyYSBkZSB0ZXN0ZXIgZGUgbm91dmVhdSBjZSBxdWl6IHBvdXIgdsOpcmlmaWVyIGNlIHF1ZSB2b3VzIGVuIGF2ZXogcmV0ZW51IHBsdXNpZXVycyBqb3Vycywgc2VtYWluZXMsIG1vaXMuLi4gRXQgZGUgcmVjZXZvaXIgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBzdWdnZXN0aW9ucyBkZSBsZWN0dXJlcy48YnI+PGJyPk1haXMgPGI+bGEgY3LDqWF0aW9uIGRlIGNlIGNvbXB0ZSBlc3QgZmFjdWx0YXRpdmU8L2I+IGV0IDxhIGhyZWY9Jy9xdWl6cy8nIHRpdGxlPSdMZXMgZGVybmllcnMgcXVpenMgcHVibGnDqXMnPnZvdXMgcG91dmV6IHBhcmNvdXJpciBXaWtpTGVybmkgbGlicmVtZW50PC9hPi5cIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIHRhZ3NMaXN0VHh0OiBcIlBhcmNvdXJpciBsZXMgcnVicmlxdWVzIDpcIixcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIGxpZW5zIGRlIGwnaW50ZXJmYWNlXG4gICAgaGVhZExpbmtzOlxuICAgIFtcbiAgICAgICAgeyBhbmNob3I6IFwiQ29udGFjdFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29udGFjdC5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiUGFyY291cmlyXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9xdWl6cy9cIiwgaWQ6XCJpbmRleEhlYWRMaW5rXCIsIHRpdGxlOlwiTGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNb24gY29tcHRlXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb25uZXhpb24uaHRtbFwiLCBpZDogXCJhY2NvdW50SGVhZExpbmtcIiwgdGl0bGU6XCJBY2PDqWRlciBvdSBjcsOpZXogdm90cmUgY29tcHRlIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIsIHRpdGxlOlwiRW4gc2F2b2lyICsgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQWNjdWVpbFwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvXCIsIHRpdGxlOlwiUGFnZSBkJ2FjY3VlaWxcIiB9IH1cbiAgICBdLFxuICAgIGZvb3RMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkJsb2dcIiwgYXR0cmlidXRlczogeyBocmVmOlwiaHR0cHM6Ly9mcmFtYXNwaGVyZS5vcmcvcGVvcGxlLzdlNTRiN2EwYjUzMjAxMzg5ZWVmMmEwMDAwMDUzNjI1XCIsIHRpdGxlOlwiTGUgYmxvZyBXaWtpTGVybmkgc3VyIGRpYXNwb3JhKlwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ3LDqWRpdHNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NyZWRpdHMuaHRtbFwiLCB0aXRsZTpcIlF1aSBhIGNyw6nDqSBXaWtpTGVybmkgPyBRdWVscyBzb250IHZvcyBkcm9pdHMgP1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTWVudGlvbnMgbMOpZ2FsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL21lbnRpb25zLWxlZ2FsZXMuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkRvbm7DqWVzIHBlcnNvbm5lbGxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvZG9ubmVlcy5odG1sXCIsIHRpdGxlOlwiVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzdXIgV2lraUxlcm5pXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDR1YgJiBDR1VcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL0NHVi1DR1UuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH1cbiAgICBdLFxuICAgIGFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgYWJvdXRQYWdlOiBcImEtcHJvcG9zLmh0bWxcIixcbiAgICBhZG1pbkhvbWVQYWdlOiBcImFkbWluLmh0bWxcIixcbiAgICBjZ3VQYWdlOiBcIkNHVi1DR1UuaHRtbFwiLFxuICAgIGNvbm5lY3Rpb25QYWdlIDogXCJjb25uZXhpb24uaHRtbFwiLFxuICAgIGRlbGV0ZUxpbmtQYWdlIDogXCJhdXJldm9pci5odG1sP3Q9XCIsXG4gICAgbG9naW5MaW5rUGFnZSA6IFwibG9naW4uaHRtbD90PVwiLFxuICAgIG1hbmFnZXJIb21lUGFnZSA6IFwiZ2VzdGlvbi5odG1sXCIsXG4gICAgbmV3TG9naW5MaW5rUGFnZSA6IFwibmV3bG9naW4uaHRtbD90PVwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsICAgIFxuICAgIHN0b3BNYWlsUGFnZSA6IFwic3RvcC1tYWlsLmh0bWw/dD1cIixcbiAgICBzdWJzY3JpYmVQYWdlIDogXCJpbnNjcmlwdGlvbi5odG1sXCIsXG4gICAgdXBkYXRlQWNjb3VudFBhZ2U6IFwiY29tcHRlLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIHVzZXJIb21lUGFnZVR4dCA6IFwiTWEgcGFnZSBkJ2FjY3VlaWwuXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgdmFsaWRhdGlvbkxpbmtQYWdlIDogXCJ2YWxpZGF0aW9uLmh0bWw/dD1cIixcbiAgICAvKiBUZXh0ZXMgKGfDqW7DqXJhbCkgKi9cbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIG5vSlNOb3RpZmljYXRpb246IFwiRMOpc29sw6ksIG1haXMgcG91ciBsJ2luc3RhbnQsIGwndXRpbGlzYXRpb24gZGUgV2lraUxlcm5pIG7DqWNlc3NpdGUgbCdhY3RpdmF0aW9uIGR1IEphdmFTY3JpcHQuXCIsXG4gICAgbWFpbFJlY2lwaWVudFR4dDogXCJNZXNzYWdlIGVudm95w6kgw6AgOlwiLFxuICAgIGxpY2VuY2VUeHQ6IFwiQGNvcHlsZWZ0IExlIGNvbnRlbnUgZGUgV2lraUxlcm5pIDxhIGhyZWY9XFxcIi9jcmVkaXRzLmh0bWxcXFwiIHRpdGxlPVxcXCJFbiBzYXZvaXIgcGx1cyA/XFxcIj5lc3QgbGlicmU8L2E+IGV0IHZvdXMgZXN0IG9mZmVydCBzYW5zIHB1YmxpY2l0w6kuIFZvdXMgcG91dmV6IDxhIGhyZWY9XFxcIi9wYXJ0aWNpcGVyLWZpbmFuY2VtZW50Lmh0bWxcXFwiIHRpdGxlPVxcXCJGaW5hbmNlbWVudCBwYXJ0aWNpcGF0aWYgYXZlYyBjb250cmUtcGFydGllc1xcXCI+cGFydGljaXBlciDDoCBzb24gZmluYW5jZW1lbnQgZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICAvKiBQYWdlIGQnYWNjdWVpbCAqL1xuICAgIGhvbWVQYWdlVHh0OiBcIlBhZ2UgZCdhY2N1ZWlsXCIsXG4gICAgaG9tZVRpdGxlMTogXCJEZSBuYXR1cmUgY3VyaWV1c2UgP1wiLFxuICAgIGhvbWVQMTogXCI8Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4uPGJyPlZvdXMgcmVjZXZleiBkZSBjb3VydHMgYXJ0aWNsZXMsIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXMuPGJyPkRlcyBxdWl6cyB2b3VzIHBlcm1ldHRlbnQgZW5zdWl0ZSBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUuPGJyPkRlIGpvdXIgZW4gam91ciA8Yj5kZSBub3V2ZWxsZXMgZ3JhaW5lcyBkZSBjdWx0dXJlIHNvbnQgYWluc2kgc2Vtw6llcyBkYW5zIHZvdHJlIGphcmRpbjwvYj4uXCIsXG4gICAgaG9tZVRpdGxlMjogXCJMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiPGI+UGFzIGRlIGZhaXRzIGFsdGVybmF0aWZzPC9iPiwgdG91cyBsZXMgY29udGVudXMgc29udCA8Yj5zb3VyY8OpcyBwYXIgZGVzIGFydGljbGVzIFdpa2lww6lkaWE8L2I+Ljxicj5FdCB0b3V0IGNvbW1lIHN1ciBXaWtpcMOpZGlhLCBsZSBsb2dpY2llbCBldCBsZSBjb250ZW51IHB1Ymxpw6kgc3VyIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgc3VyIGNlIHN1amV0XFxcIj5zb250IHBhcnRhZ8OpcyBzb3VzIGxpY2VuY2VzIGxpYnJlczwvYT4uPGJyPkxlIHRvdXQgc2FucyBwdWJsaWNpdMOpLCBuaSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMuPGJyPjxiPlN1ciBXaWtpTGVybmksIHZvdXMgY3VsdGl2ZXogdm90cmUgamFyZGluIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPC9iPlwiLFxuICAgIGhvbWVCdG5BYm91dFR4dDogXCJFbiBzYXZvaXIgcGx1cyBzdXIgV2lraUxlcm5pID9cIixcbiAgICBob21lQnRuU3Vic2NyaWJlVHh0OiAgXCJUZXN0ZXogV2lraUxlcm5pXCIsXG4gICAgaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlOiAgXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgLyogUGFnZSBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4uLiAqLyAgIFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiQ3VsdHVyZSBnw6luw6lyYWxlIC0gYXBwcmVuZXogZGUgbm91dmVsbGVzIGNob3NlcyBhdmVjIFdpa2lMZXJuaVwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzSW50cm86IFwiV2lraUxlcm5pIDogdGVzdGV6IHZvcyBjb25uYWlzc2FuY2VzIGV0IGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmkuXCIsXG4gICAgbmV3c0xpc3RUaXRsZTogXCI8cD48Yj5BdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBxdWVscXVlIGNob3NlIGRlIG5vdXZlYXU8L2I+PGJyPlNpIGRlc3NvdXMgbGVzIGRlcm5pw6hyZXMgcHVibGljYXRpb25zLiBWb3VzIHBvdXZleiBhdXNzaSA8YSBocmVmPScvcXVpenMvdGhlbWVzLmh0bWwnPnBhcmNvdXJpciBsZSBzaXRlIHBhciB0aMOobWVzIG91IG1vdHMtY2zDqXM8L2E+LjwvcD5cIixcbiAgICAvKiBQbGFuIGR1IHNpdGUsIGxpc3RlIGRlcyB0YWdzICovICAgXG4gICAgdGFnTGlzdFRpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGRlcyBhcnRpY2xlcyBldCBxdWl6cyBzdXIgZGUgbm9tYnJldXggdGjDqG1lcyAhXCIsXG4gICAgdGFnTGlzdE1ldGFEZXNjOiBcIldpa2lMZXJuaSA6IGTDqWNvdXZyaXIgbGVzIGRpZmbDqXJlbnRzIHRow6htZXMgYWJvcmTDqXMgcGFyIFdpa2lMZXJuaS4gSW54ZXggZHUgc2l0ZS5cIixcbiAgICB0YWdMaXN0SW50cm86IFwiPGgzPkF2ZWMgV2lraUxlcm5pLCBkZXZlbmV6IGZvcnQgZW4gdGjDqG1lcy4uLiBPdWkgbWFpcyBxdWVscyB0aMOobWVzID8gOik8L2gzPjxibG9ja3F1b3RlPkFyaXN0b3Rl4oCvOiDCq+KAr0zigJlob21tZSBhIG5hdHVyZWxsZW1lbnQgbGEgcGFzc2lvbiBkZSBjb25uYcOudHJl4oCm4oCvwrs8L2Jsb2NrcXVvdGU+XCIsXG4gICAgLyogUGFnZSBxdWl6cyAqL1xuICAgIGFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dDogXCJSZWxpcmVcIixcbiAgICBxdWl6RWxlbWVudExpbmtzSW50cm86IFwiRW4gc2F2b2lyIHBsdXNcIixcbiAgICBxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlOiBcIlJlY2V2ZXogbGVzIHByb2NoYWlucyBhcnRpY2xlcyBXaWtpTGVybmlcIixcbiAgICBleHBsYW5hdGlvblRpdGxlOiBcIlZvdXMgZMOpY291dnJleiBXaWtpTGVybmnigK8/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiPHA+TGUgcHJpbmNpcGUgZXN0IHNpbXBsZeKArzogPGI+dm91cyBjb21tZW5jZXogcGFyIGxpcmUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBkb250IGxlIGxpZW4gdm91cyBlc3QgcHJvcG9zw6k8L2I+LiBQdWlzIHZvdXMgPGI+YWZmaWNoZXIgbGUgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBhdmV6IHJldGVudSBkZSB2b3RyZSBsZWN0dXJlPC9iPi4gU3VpdmFudCBsZXMgcXVlc3Rpb25zLCA8Yj51bmUgb3UgcGx1c2lldXJzIHLDqXBvbnNlcyBwZXV2ZW50IMOqdHJlIGNvcnJlY3RlczwvYj4gZXQgZG9pdmVudCBkb25jIMOqdHJlIGNvY2jDqWVzLiBD4oCZZXN0IHRvdWpvdXJzIDxiPmxlIGNvbnRlbnUgZGUgbOKAmWFydGljbGUgV2lraXDDqWRpYSBxdWkgZmFpdCBmb2k8L2I+IGNvbmNlcm5hbnQgbGVzIMKr4oCvYm9ubmVz4oCvwrsgcsOpcG9uc2VzLiBD4oCZZXN0IHVuZSBmYcOnb24gZGUgdGVzdGVyIMOgIGxhIGZvaXMgdm90cmUgY2FwYWNpdMOpIGTigJlhdHRlbnRpb24gZXQgdm90cmUgbcOpbW9pcmUuIExlcyBhcnRpY2xlcyBkZSBXaWtpcMOpZGlhIHBldXZlbnQgw6l2b2x1ZXIsIGRvbmMgbuKAmWjDqXNpdGV6IHBhcyA8YSBocmVmPScvY29udGFjdC5odG1sJz7DoCBtZSBzaWduYWxlciB1bmUgZXJyZXVyPC9hPi48L3A+PHA+PGI+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBk4oCZYXV0cmVzIHNvbHV0aW9ucyBwb3VyIGFtw6lsaW9yZXIgdm90cmUgY3VsdHVyZSBnw6luw6lyYWxlPC9iPi4gUG91ciBlbiBzYXZvaXIgcGx1cywgY2xpcXVleiBzdXIgbGUgYm91dG9uIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIGV4cGxhbmF0aW9uRWxlbWVudFR4dDogXCI8cD5XaWtpTGVybmkgdm91cyBwcm9wb3NlIGRlIDxiPnJlY2V2b2lyIHBhciBlLW1haWwgw6AgbGEgZnLDqXF1ZW5jZSBjaG9pc2llLCBkZSBjb3VydHMgYXJ0aWNsZXMgbGlzaWJsZXMgZW4gcXVlbHF1ZXMgbWludXRlczwvYj4gZXQgcG9ydGFudCBzdXIgZGVzIHN1amV0cyB0csOocyB2YXJpw6lzIGRlIDxiPmN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4gKGFydHMsIGhpc3RvaXJlLCBsaXR0w6lyYXR1cmUsIHNjaWVuY2VzLCBldGMuKS48L3A+PHA+Q2VzIGFydGljbGVzIHNvbnQgYmFzw6lzIHN1ciA8Yj51bmUgb3UgcGx1c2lldXJzIHBhZ2VzIGRlIFdpa2lww6lkaWE8L2I+IChmb3VybmllcyBlbiBsaWVuKSwgZG9udCA8Yj5pbHMgZXh0cmFpZW50IGNlcnRhaW5lcyBpbmZvcm1hdGlvbnM8L2I+LjwvcD48cD5DaGFxdWUgc8OpcmllIGTigJlhcnRpY2xlcyBlc3QgPGI+c3VpdmllIGTigJl1biBxdWl6PC9iPiBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48L3A+PHA+PGI+Vm91cyBhcHByZW5leiBhaW5zaSByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3NlczwvYj4gdHLDqHMgc2ltcGxlbWVudC48L3A+XCIsXG4gICAgLyogQXV0cmVzICovXG4gICAgaWxsdXN0cmF0aW9uRGlyIDogXCIvaW1nL3F1aXpzL1wiLFxuICAgIHR3aXR0ZXJBY2NvdW50OiBcIldpa2lMZXJuaVwiLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMixcbiAgICBtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZTogMyxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIDogMyxcbn07IiwiLy8gLS0gUEFHRSBQRVJNRVRUQU5UIERFIFZBTElERVIgTEEgQ1LDiUFUSU9OIERFIFNPTiBDT01QVEUsIFBVSVMgREUgQ09NUEzDiVRFUiBTT04gSU5TQ1JJUFRJT05cblxuLy8vIFVuIHRva2VuIGVzdCB0cmFuc21pcyBlbiBwYXJhbcOodHJlIGRlIGwnVXJsLiBJbCBhIHVuZSB2YWxpZGl0w6kgbGltaXTDqSBkYW5zIGxlIHRlbXBzLlxuLy8vIFNpIGxlIHRva2VuIG4nZXN0IHBhcy9wbHVzIHZhbGlkZSwgb24gcmVkaXJpZ2UgbCd1dGlsaXNhdGV1ciB2ZXJzIGxhIHBhZ2UgZGUgY29ubmV4aW9uIHBvdXIgb2J0ZW5pciB1biBub3V2ZWF1IGxpZW4uXG4vLy8gU2kgbGUgdG9rZW4gZXN0IG9rLCBvbiBsJ2luZm9ybWUgcXVlIHRvdXQgZXN0IG9rIGV0IGx1aSBwcm9wb3NlIGRlIHNlIGNvbXBsw6l0ZXIgbGVzIGluZm9ybWF0aW9ucyBkZSBzb24gY29tcHRlLiBVbmUgc2Vzc2lvbiBsdWkgZXN0IMOpZ2FsZW1lbnQgY3LDqcOpZS5cbi8vLyBTaSBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIHVuZSBzZXNzaW9uIGFjdGl2ZSB2YWxpZGUsIGMnZXN0IHF1J2lsIGEgZMOpasOgIGNsaXF1w6kgc3VyIGxlIGxpZW4uIE9uIGxlIHJlZGlyaWdlIHZlcnMgc2EgcGFnZSBkJ2FjY3VlaWwuXG5cbi8vIEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB0aXLDqXMgZHUgYmFja2VuZCA6XG5pbXBvcnQgeyBhcGlVcmwsIGF2YWlsYWJsZUxhbmdzLCB0aGVtZSwgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyB9IGZyb20gXCIuLi8uLi9jb25maWcvaW5zdGFuY2UuanNcIjtcbmNvbnN0IGxhbmc9YXZhaWxhYmxlTGFuZ3NbMF07XG5jb25zdCBjb25maWdUZW1wbGF0ZSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcbmNvbnN0IGNvbmZpZ1VzZXJzID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTsgLy8gYmVzb2luIGRlIHRvdXMgbGUgZmljaGllciBwb3VyIGNvbmZpZ3VyZXIgbGUgZm9ybXVsYWlyZSBkZSBzYWlzaWUsIGV0Yy5cblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZXMgYXUgc2NyaXB0IDpcbmltcG9ydCB7IGdldExvY2FseSwgc2F2ZUxvY2FseSB9IGZyb20gXCIuL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanNcIjtcbmltcG9ydCB7IGFkZEVsZW1lbnQgfSBmcm9tIFwiLi90b29scy9kb20uanNcIjtcbmltcG9ydCB7IGhlbGxvRGV2IH0gZnJvbSBcIi4vdG9vbHMvZXZlcnl3aGVyZS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGF0YXNGcm9tSW5wdXRzLCBzZXRBdHRyaWJ1dGVzVG9JbnB1dHMgfSBmcm9tIFwiLi90b29scy9mb3Jtcy5qc1wiO1xuaW1wb3J0IHsgZ2V0UGFzc3dvcmQgfSBmcm9tIFwiLi4vLi4vdG9vbHMvbWFpblwiO1xuaW1wb3J0IHsgbG9hZE1hdG9tbyB9IGZyb20gXCIuL3Rvb2xzL21hdG9tby5qc1wiO1xuaW1wb3J0IHsgZ2V0VXJsUGFyYW1zIH0gZnJvbSBcIi4vdG9vbHMvdXJsLmpzXCI7XG5pbXBvcnQgeyBjaGVja1Nlc3Npb24sIHNldFNlc3Npb24gfSBmcm9tIFwiLi90b29scy91c2Vycy5qc1wiO1xuXG4vLyBEaWN0aW9ubmFpcmVzIDpcbmNvbnN0IHsgbm90UmVxdWlyZWQsIHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IGFscmVhZHlDb25uZWN0ZWQsIGJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSwgZ29kZmF0aGVyRm91bmQsIGdvZGZhdGhlck5vdEZvdW5kLCBwYXNzd29yZENvcGllZCwgdmFsaWRhdGlvbk1lc3NhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi9sYW5nL1wiK2xhbmcrXCIvdXNlclwiKTtcblxuLy8gUHJpbmNpcGF1eCDDqWzDqW1lbnRzIGR1IERPTSBtYW5pcHVsw6lzIDpcbmNvbnN0IGNvZGVHb2RmYXRoZXJJbnB1dD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVHb2RmYXRoZXJcIik7XG5jb25zdCBkaXZFeHBsYW5hdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4cGxhbmF0aW9uc1wiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBmb3JtQWNjb3VudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3Vic2NyaXB0aW9uMlwiKTtcbmNvbnN0IHBhc3N3b3JkSW5wdXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJuZXdQYXNzd29yZFwiKTtcbmNvbnN0IHBhc3N3b3JkTGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdldFBhc3N3b3JkXCIpO1xuY29uc3QgcGFzc3dvcmRIZWxwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGFzc3dvcmRNZXNzYWdlXCIpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIEV4cGxpY2F0aW9ucyBjYWNow6llcyBwYXIgZMOpZmF1dCA6XG4gICAgICAgIGRpdkV4cGxhbmF0aW9ucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogYWxyZWFkeUNvbm5lY3RlZCwgY29sb3I6XCJpbmZvXCIgfSk7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBob21lUGFnZT11c2VyLnN0YXR1cytcIkhvbWVQYWdlXCI7Ly8gbG9ycyBkZSBsYSBjcsOpYXRpb24gZCd1biBjb21wdGUsIHNldWwgbGUgc3RhdHV0IFwidXNlclwiIGVzdCBwb3NzaWJsZS5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYoZGF0YXMgJiYgZGF0YXMudCE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5jaGVja1N1YnNjcmliZVRva2VuUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubmV3VXNlciAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UudG9rZW4gIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIHZhbGlkYXRpb25NZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZmZpY2hhZ2UgZXQgaW5pdGlhbGlzYXRpb24gZHUgZm9ybXVsYWlyZSBwZXJtZXR0YW50IGRlIGNvbXBsw6l0ZXIgbGVzIGluZm9zIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQWNjb3VudC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZFeHBsYW5hdGlvbnMuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBmb3JtQWNjb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWZmaWNoYWdlIGRlcyBpbmZvcyBkw6lqw6AgZW5yZWdpc3Ryw6llcyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLm5ld1VzZXIuVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZvcm1BY2NvdW50LmVsZW1lbnRzW2RhdGFdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbZGF0YV0udmFsdWU9cmVzcG9uc2UubmV3VXNlci5Vc2VyW2RhdGFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKb3VycyBkZSByw6ljZXB0aW9uIGRlIGwnYWJvbm5lbm1lbnQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZS5uZXdVc2VyLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbXCJkXCIrcmVzcG9uc2UubmV3VXNlci5TdWJzY3JpcHRpb24ucmVjZWlwdERheXNbaV1dLmNoZWNrZWQ9XCJjaGVja2VkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2VydGFpbnMgbmF2aWdhdGV1cnMgcmVtcGxpc3NlbnQgYXV0b21hdGlxdWVtZW50IGxlcyBjaGFtcHMgcGFzc3dvcmQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQudmFsdWU9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDcsOpYXRpb24gZCd1bmUgc2Vzc2lvbiBjb3VydGUgYXZlYyBsZSB0b2tlbiByZcOndSAobsOpY2Vzc2FpcmUgcG91ciBsYSBzdWl0ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25uZXhpb25NYXhUaW1lPURhdGUubm93KCkrcGFyc2VJbnQodG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycywxMCkqMzYwMCoxMDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlc3Npb24ocmVzcG9uc2UubmV3VXNlci5Vc2VyLmlkLCByZXNwb25zZS50b2tlbiwgY29ubmV4aW9uTWF4VGltZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgodGhpcy5zdGF0dXMgPT09IDIwMCB8fCB0aGlzLnN0YXR1cyA9PT0gNDA0KSAmJiByZXNwb25zZS5lcnJvcnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBHw6luw6lyZSB1biBtb3QgZGUgcGFzc2UgcHNldWRvLWFsw6lhdG9pcmUgOlxuICAgICAgICAgICAgICAgIHBhc3N3b3JkTGluay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC50eXBlPVwidGV4dFwiO1xuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZElucHV0LnZhbHVlPWdldFBhc3N3b3JkKDgsIDEyKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29waWUgZHUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBkYW5zIGxlIFwicHJlc3NlLXBhcGllclwiIGRlIGwnb3JkaW5hdGV1ciA6XG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChwYXNzd29yZEhlbHAsIFwiZGl2XCIsIHBhc3N3b3JkQ29waWVkLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyBWw6lyaWZpZSBxdWUgbGUgY29kZS9lLW1haWwgZGUgcGFycmFpbmFnZSBzYWlzaSBlc3QgdmFsaWRlIDpcbiAgICAgICAgICAgICAgICBjb2RlR29kZmF0aGVySW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVWYWx1ZT1jb2RlR29kZmF0aGVySW5wdXQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZihjb2RlVmFsdWUhPT1cIlwiKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5nZXRHb2RmYXRoZXJSb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjA0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVHb2RmYXRoZXJNZXNzYWdlXCIpLCBcImRpdlwiLCBnb2RmYXRoZXJOb3RGb3VuZCwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZUdvZGZhdGhlck1lc3NhZ2VcIiksIFwiZGl2XCIsIGdvZGZhdGhlckZvdW5kLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTsgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFzPXsgY29kZVRlc3Q6Y29kZVZhbHVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gRWZmYWNlIGwnw6l2ZW50dWVsIG1lc3NhZ2UgZMOpasOgIGluamVjdMOpIHNpIGwndXRpbGlzYXRldXIgcmV2aWVudCBzdXIgY2UgY2hhbXAgZGUgc2Fpc2llIDpcbiAgICAgICAgICAgICAgICBjb2RlR29kZmF0aGVySW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZUdvZGZhdGhlck1lc3NhZ2VcIiksIFwiaVwiLCBub3RSZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUcmFpdGUgZGUgbCdlbnZvaSBkJ3VuZSBtaXNlIMOgIGpvdXIgZGVzIGluZm9zIDpcbiAgICAgICAgICAgICAgICBmb3JtQWNjb3VudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1BY2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVjb21wb3NpdGlvbiBkZXMgam91cnMgZCdlbnZvaSBkZSBsJ2Fib25uZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMucmVjZWlwdERheXM9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTE7IGk8PTc7IGkrKylcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXNbXCJkXCIraV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcy5yZWNlaXB0RGF5cys9XCJcIitpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTsvLyBvbiBhIGNyw6nDqSBsYSBzZXNzaW9uICsgaGF1dFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJVc2VyVXBkYXRlID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5zaWdudXBDb21wbGV0aW9uUm91dGUrdXNlci5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLm1lc3NhZ2UgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSwgY29sb3I6XCJzdWNjZXNzXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oY29uZmlnVGVtcGxhdGVbXCJ1c2VySG9tZVBhZ2VcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTtcbmhlbGxvRGV2KCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3VzZXIkIiwid2VicGFjazovLy8uLi9sYW5nL2ZyL2dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvdXNlci5qcyIsIndlYnBhY2s6Ly8vLi4vdG9vbHMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mgc3luYyBeXFwuXFwvLipcXC5qcyQiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzL2RlZmF1bHQvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzIiwid2VicGFjazovLy8uL3NyYy9zdWJzY3JpYmVWYWxpZGF0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9jbGllbnRzdG9yYWdlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9kb20uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2Zvcm1zLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9tYXRvbW8uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VybC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJtYXhRdWVzdGlvbm5haXJlU2VuZGVkQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iUXVlc3Rpb25uYWlyZXNCeUdyb3VwTWluIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXgiLCJuYklsbHVzdHJhdGlvbnNNaW4iLCJuYklsbHVzdHJhdGlvbnNNYXgiLCJtYXhJbGx1c3RyYXRpb25TaXplaW5PY3RldCIsIm1pbWVUeXBlc0ZvcklsbHVzdHJhdGlvbiIsImlsbHVzdHJhdGlvbnNXaWR0aE1heEluUHgiLCJpbGx1c3RyYXRpb25zTWluaWF0dXJlc1dpZHRoTWF4SW5QeCIsIm5iTGlua3NNaW4iLCJuYkxpbmtzTWF4IiwicGFzc3dvcmRNaW5MZW5ndGgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwibWF0b21vIiwidXJsIiwic2l0ZUlkIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxyZWFkeUNvbm5lY3RlZCIsImJhZExpbmtWYWxpZGF0aW9uTWVzc2FnZSIsImJhZFBhc3N3b3JkIiwiYnllYnllTWVzc2FnZSIsImNvbm5lY3Rpb25PayIsImNyZWF0aW9uT2tNZXNzYWdlIiwiY3JvbkRlbGV0ZVVudmFsaWRlZFVzZXJzTWVzc2FnZSIsImRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlIiwiZW1haWxOb3RGb3VuZCIsImZhaWxCb3RUZXN0IiwiZmFpbEJvdFRlc3RMb2ciLCJmb3Jtc0VtYWlsTGFiZWwiLCJmb3Jtc0VtYWlsUGxhY2Vob2xkZXIiLCJmb3Jtc0VtYWlsMlBsYWNlaG9sZGVyIiwiZm9ybXNDR1VPa0xhYmVsIiwiZm9ybXNTdWJtaXRUeHQiLCJnb2RmYXRoZXJGb3VuZCIsImdvZGZhdGhlck5vdEZvdW5kIiwiaW5mb3NBZG1pbkdvZGZhdGhlciIsImluZm9zQWRtaW5OYkdvZENoaWxkcyIsImluZm9zVXNlckZvckFkbWluIiwiaW5mb3NVc2VyTmJHb2RDaGlsZHMiLCJpbmZvc1VzZXJOb0dvZGNoaWxkcyIsIm1haWxEZWxldGVCb2R5SFRNTCIsIm1haWxEZWxldGVCb2R5VHh0IiwibWFpbERlbGV0ZUxpbmtBbHJlYWR5TWVzc2FnZSIsIm1haWxEZWxldGVMaW5rRmFpbE1lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua01lc3NhZ2UiLCJtYWlsRGVsZXRlTGlua09rTWVzc2FnZSIsIm1haWxEZWxldGVMaW5rVHh0IiwibWFpbERlbGV0ZVN1YmplY3QiLCJtYWlsTG9naW5MaW5rQm9keUhUTUwiLCJtYWlsTG9naW5MaW5rQm9keVR4dCIsIm1haWxMb2dpbkxpbmtNZXNzYWdlIiwibWFpbExvZ2luTGlua1N1YmplY3QiLCJtYWlsTG9naW5MaW5rVHh0IiwibWFpbFRoYW5rR29kZmF0aGVyQm9keUhUTUwiLCJtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IiwibWFpbFRoYW5rR29kZmF0aGVyTGlua1R4dCIsIm1haWxUaGFua0dvZGZhdGhlclN1YmplY3QiLCJtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCIsIm1haWxVcGRhdGVMb2dpbkJvZHlUeHQiLCJtYWlsVXBkYXRlTG9naW5MaW5rTWVzc2FnZSIsIm1haWxVcGRhdGVMb2dpbkxpbmtUeHQiLCJtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2UiLCJtYWlsVXBkYXRlTG9naW5TdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIiwibWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQiLCJtYWlsVmFsaWRhdGlvbkxpbmtTdWJqZWN0IiwibWFpbFZhbGlkYXRpb25MaW5rVHh0IiwibWFpbFZhbGlkYXRpb25NZXNzYWdlIiwibWFpbFdlbGNvbWVCb2R5SFRNTCIsIm1haWxXZWxjb21lQm9keVR4dCIsIm1haWxXZWxjb21lTGlua1R4dCIsIm1haWxXZWxjb21lU3ViamVjdCIsIm5lZWRCZUNvbm5lY3RlZCIsIm5lZWRDaG9vc2VMb2dpbldheSIsIm5lZWRFbWFpbCIsIm5lZWRLbm93TmV3c2xldHRlck9rIiwibmVlZExhbmd1YWdlIiwibmVlZExvbmdQYXNzV29yZCIsIm5lZWRNYXhUaW1lRGlmZmVyZW5jZSIsIm5lZWRNaW5UaW1lRGlmZmVyZW5jZSIsIm5lZWROYW1lIiwibmVlZE5vdFRvb0xvbmdOYW1lIiwibmVlZE5vdFRvb0xvbmdFbWFpbCIsIm5lZWRQYXNzV29yZCIsIm5lZWRTTVRQIiwibmVlZFNNVFBOb3RGb3VuZCIsIm5lZWRTdGF0dXMiLCJuZWVkVGltZURpZmZlcmVuY2UiLCJuZWVkVUdDT2siLCJuZWVkVW5pcXVlRW1haWwiLCJuZWVkVmFsaWRhdGlvblRvTG9naW4iLCJuZWVkVmFsaWRMYXN0Q29ubmVjdGlvbkRhdGUiLCJwYXNzd29yZENvcGllZCIsInNlYXJjaFVzZXJzV2l0aG91dFJlc3VsdCIsInRvb01hbnlMb2dpbkZhaWxzIiwidXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIiwidXBkYXRlZE5lZWRHb29kRW1haWwiLCJ1cGRhdGVkTmVlZEdvb2RHb2RmYXRoZXIiLCJ1cGRhdGVkTmVlZFVuaXF1ZUVtYWlsIiwidXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyIiwidXBkYXRlZE9rTWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZSIsInZhbGlkYXRpb25BbHJlYWR5TWVzc2FnZUFkbWluIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZUFkbWluIiwid2VsY29tZU1lc3NhZ2UiLCJUb29sIiwiaXNFbXB0eSIsIm15VmFyIiwidW5kZWZpbmVkIiwidHJpbSIsInRyaW1JZk5vdE51bGwiLCJteVN0cmluZyIsInNob3J0ZW5JZkxvbmdlclRoYW4iLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZXBsYWNlQWxsIiwibWFwT2JqIiwicmVwbGFjZUVsdHMiLCJSZWdFeHAiLCJPYmplY3QiLCJrZXlzIiwiam9pbiIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0UmFuZG9tSW50IiwiTWF0aCIsImNlaWwiLCJmbG9vciIsInJhbmRvbSIsImRhdGVGb3JtYXQiLCJkYXRlU3RyaW5nIiwibGFuZyIsIm15RGF0ZSIsIkRhdGUiLCJteURheSIsImdldERhdGUiLCJteU1vdW50aCIsImdldE1vbnRoIiwibXlZZWFyIiwiZ2V0RnVsbFllYXIiLCJnZXRQYXNzd29yZCIsIm5iQ2FyTWluIiwibmJDYXJNYXgiLCJuYkNhciIsImxldHRlcnMiLCJvdGhlcnMiLCJpIiwiaGVhZExpbmtzIiwiYW5jaG9yIiwiYXR0cmlidXRlcyIsImhyZWYiLCJpZCIsImZvb3RMaW5rcyIsInJlbCIsIm1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlIiwidXNlckhvbWVQYWdlIiwiYWRtaW5Ib21lUGFnZSIsIm1hbmFnZXJIb21lUGFnZSIsInN1YnNjcmliZVBhZ2UiLCJjb25uZWN0aW9uUGFnZSIsImFjY291bnRQYWdlIiwicXVlc3Rpb25uYWlyZXNNYW5hZ2VtZW50UGFnZSIsInVzZXJzTWFuYWdlbWVudFBhZ2UiLCJuYlF1ZXN0aW9ubmFpcmVzVXNlckhvbWVQYWdlIiwiaWxsdXN0cmF0aW9uRGlyIiwic2l0ZVNsb2dhbiIsImhvbWVUaXRsZTEiLCJob21lUDEiLCJob21lVGl0bGUyIiwiaG9tZVAyIiwibmV3UXVlc3Rpb25uYWlyZXNUaXRsZSIsIm5ld1F1ZXN0aW9ubmFpcmVzSW50cm8iLCJleHBsYW5hdGlvblRpdGxlIiwiZXhwbGFuYXRpb25UeHQiLCJub0pTTm90aWZpY2F0aW9uIiwidGFnc0xpc3RUeHQiLCJhYm91dFBhZ2UiLCJjZ3VQYWdlIiwiZGVsZXRlTGlua1BhZ2UiLCJsb2dpbkxpbmtQYWdlIiwibmV3TG9naW5MaW5rUGFnZSIsInN0b3BNYWlsUGFnZSIsInVwZGF0ZUFjY291bnRQYWdlIiwidXNlckhvbWVQYWdlVHh0IiwidmFsaWRhdGlvbkxpbmtQYWdlIiwibWFpbFJlY2lwaWVudFR4dCIsImxpY2VuY2VUeHQiLCJob21lUGFnZVR4dCIsImhvbWVCdG5BYm91dFR4dCIsImhvbWVCdG5TdWJzY3JpYmVUeHQiLCJob21lU3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJuZXdzTGlzdFRpdGxlIiwidGFnTGlzdFRpdGxlIiwidGFnTGlzdE1ldGFEZXNjIiwidGFnTGlzdEludHJvIiwiYW5zd2Vyc0V4cGxhbmF0aW9uc0xpbmtUZXh0IiwicXVpekVsZW1lbnRMaW5rc0ludHJvIiwicXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZSIsImV4cGxhbmF0aW9uRWxlbWVudFR4dCIsInR3aXR0ZXJBY2NvdW50IiwibWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2UiLCJjb25maWdUZW1wbGF0ZSIsImNvbmZpZ1VzZXJzIiwiZGl2RXhwbGFuYXRpb25zIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRpdk1lc3NhZ2UiLCJkaXZSZXNwb25zZSIsImZvcm1BY2NvdW50IiwicGFzc3dvcmRJbnB1dCIsInBhc3N3b3JkTGluayIsInBhc3N3b3JkSGVscCIsImluaXRpYWxpc2UiLCJzdHlsZSIsImRpc3BsYXkiLCJpc0Nvbm5lY3RlZCIsImNoZWNrU2Vzc2lvbiIsInNhdmVMb2NhbHkiLCJtZXNzYWdlIiwiY29sb3IiLCJ1c2VyIiwiZ2V0TG9jYWx5IiwiaG9tZVBhZ2UiLCJzdGF0dXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImFzc2lnbiIsImxvYWRNYXRvbW8iLCJkYXRhcyIsImdldFVybFBhcmFtcyIsInQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwibmV3VXNlciIsInRva2VuIiwiYWRkRWxlbWVudCIsInNldEF0dHJpYnV0ZXNUb0lucHV0cyIsImRhdGEiLCJVc2VyIiwiZWxlbWVudHMiLCJTdWJzY3JpcHRpb24iLCJyZWNlaXB0RGF5cyIsImNoZWNrZWQiLCJjb25uZXhpb25NYXhUaW1lIiwibm93IiwicGFyc2VJbnQiLCJzZXRTZXNzaW9uIiwiZXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwicHJldmVudERlZmF1bHQiLCJ0eXBlIiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJpbm5lckhUTUwiLCJnZXREYXRhc0Zyb21JbnB1dHMiLCJ4aHJVc2VyVXBkYXRlIiwic2V0UmVxdWVzdEhlYWRlciIsInN0cmluZ2lmeSIsImNvbnNvbGUiLCJlcnJvciIsImhlbGxvRGV2IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImpzb24iLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwibG9nIiwidXBkYXRlQWNjb3VudExpbmsiLCJsaW5rIiwiaW5wdXRzQ29uZiIsIm15Rm9ybSIsImlkSW5wdXQiLCJpbnB1dEhUTUwiLCJhdHRyaWJ1dGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiZW50cmllIiwiZW50cmllcyIsImVtcHlGb3JtIiwiZW1weUFuZEhpZGVGb3JtIiwiX3BhcSIsInB1c2giLCJzZWxmIiwiZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCIsIm5vd1RzIiwicm91bmQiLCJnZXRUaW1lIiwidmlzaXRvckluZm8iLCJnZXRWaXNpdG9ySW5mbyIsImNyZWF0ZVRzIiwiY29va2llVGltZW91dCIsIm9yaWdpbmFsVGltZW91dCIsInNldFZpc2l0b3JDb29raWVUaW1lb3V0IiwidSIsImQiLCJnIiwicyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXN5bmMiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwicGFyYW1ldGVycyIsInNwbGl0IiwicGFyYW0iLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0IiwidXNlcklkIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJ1cmxSZWRpcmVjdGlvbiIsInVybFdhbnRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlckRhdGFzIiwicmVkaXJlY3RVc2VyIiwib25sb2FkIiwiaXNWYWxpZCIsImxhbmd1YWdlIiwidGltZURpZmZlcmVuY2UiLCJuYkRheXNPayIsInVybEFjY291bnQiLCJpbmRleE9mIiwib25lcnJvciIsInN0YXR1c1RleHQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxNQUFNQSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsbUNB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bEksV0FBRyxDQUFDMkIsSUFBSjtBQUNIO0FBQ0o7QUFDSixHQXRFTSxDQUFQO0FBdUVILENBekVNLEMsQ0EwRVA7O0FBQ0EsTUFBTThGLFlBQVksR0FBRyxDQUFDTixjQUFELEVBQWlCaEksT0FBakIsRUFBMEJpSSxTQUExQixLQUNyQjtBQUNJLE1BQUcsQ0FBQ2xQLDJEQUFPLENBQUNpSCxPQUFELENBQVgsRUFDSUQsb0VBQVUsQ0FBQyxTQUFELEVBQVlDLE9BQVosQ0FBVjtBQUNKLE1BQUcsQ0FBQ2pILDJEQUFPLENBQUNrUCxTQUFELENBQVgsRUFDSWxJLG9FQUFVLENBQUMsS0FBRCxFQUFRa0ksU0FBUixDQUFWO0FBQ0osTUFBRyxDQUFDbFAsMkRBQU8sQ0FBQ2lQLGNBQUQsQ0FBWCxFQUNJMUgsTUFBTSxDQUFDQyxRQUFQLENBQWdCQyxNQUFoQixDQUF1QndILGNBQXZCO0FBQ1AsQ0FSRCxDIiwiZmlsZSI6Ii4vSlMvc3Vic2NyaWJlVmFsaWRhdGlvbi5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9zdWJzY3JpYmVWYWxpZGF0aW9uLmpzXCIpO1xuIiwiY29uc3QgdXNlcnMgPSByZXF1aXJlKFwiLi91c2Vyc1wiKTtcbmNvbnN0IHF1ZXN0aW9ubmFpcmVzID0gcmVxdWlyZShcIi4vcXVlc3Rpb25uYWlyZXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhcGlVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaVwiLFxuICAgIHNpdGVVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCIsXG4gICAgYWRtaW5OYW1lOiBcIkZhYnJpY2VcIixcbiAgICBhZG1pbkVtYWlsOiBcImRldkB3aWtpbGVybmkuY29tXCIsXG4gICAgc2VuZGVyTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIHNlbmRlckVtYWlsOiBcImJvbmpvdXJAd2lraWxlcm5pLmNvbVwiLFxuICAgIGFkbWluTGFuZzogXCJmclwiLFxuICAgIHRoZW1lOiBcIndpa2lsZXJuaVwiLCAvLyBsZSB0aMOobWUgdXRpbGlzw6kgKGRhbnMgL3ZpZXdzKSBwb3VyIGfDqW7DqXJlciBsZXMgcGFnZXMgSFRNTC4gQ29udGllbnQgc2VzIHByb3ByZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi5cbiAgICBhdmFpbGFibGVMYW5nczogW1wiZnJcIl0sLy8gTGFuZ3VhZ2VzIGluIHdoaWNoIHRoZSBzaXRlIGlzIGF2YWlsYWJsZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGUgZGVmYXVsdCBvbmUuXG4gICAgc2l0ZU5hbWU6IFwiV2lraUxlcm5pIChsb2NhbClcIixcbiAgICBiZWdpbkNvZGVHb2RmYXRoZXI6IFwiV0xcIiwgLy8gY2FzZS1zZW5zaXRpdmUgYW5kIGNhbid0IGNvbnRhaW4gXCJAXCIgIVxuICAgIGRlZmF1bHRSZWNlaXB0RGF5czogXCIxNDdcIiwgLy8gUGFyIGTDqWZhdXQsIHF1ZWwocykgam91cihzKSBkZSBsYSBzZW1haW5lLCBsJ3V0aWxpc2F0ZXVyIHJlw6dvaXQtaWwgcXVlbHF1ZSBjaG9zZSA/ICgxPWRpbWFuY2hlLCAyPWx1bmRpLi4uIDc9c2FtZWRpKVxuICAgIGNyb25UaW1pbmdBbGVydEluU2Vjb25kZTogMTIwLCAvLyBmb3IgbG9nc1xuICAgIHJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGU6IDMsIC8vIGlkZW1cbiAgICB0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VyczogXCI0OGhcIiwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3plaXQvbXNcbiAgICB0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzOiBcIjFoXCIsXG4gICAgdG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VyczogXCIyNGhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1heFRpbWVJbkRheXM6IFwiMTgwIGRheXNcIixcbiAgICB0b2tlbkxvZ2luQ2hhbmdpbmdUaW1lSW5Ib3VyczogXCIxaFwiLC8vIGZvciBlbWFpbCAmIHBhc3N3b3JkIGNoYW5naW5nXG4gICAgdG9rZW5EZWxldGVVc2VyVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXM6IFwiNyBkYXlzXCIsIC8vIHRva2VuIHNlbmQgd2l0aCBzdWJzY3JpcHRpb24ncyBlbWFpbHNcbiAgICBmcmVlQWNjb3VudFRpbWluZ0luRGF5czogMCwvLyBpZiAwID0gdW5saW1pdGVkXG4gICAgZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXM6IDEwLFxuICAgIGFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzOiAzLFxuICAgIGluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5czogMTgwLFxuICAgIC8vIFF1ZXN0aW9ubmFpcmVzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLCAvLyBtaW5pbXVtIG51bWJlciBvZiBxdWVzdGlvbnMgZm9yIHRoZSBxdWVzdGlvbm5haXJlIHRvIGJlIHB1Ymxpc2hhYmxlXG4gICAgbmJRdWVzdGlvbnNNYXg6IDIsIC8vIGlmIDAgPSBub3QgbWF4aW11bVxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgbmJOZXdRdWVzdGlvbm5haXJlczogMTIsLy8gZm9yIFJTUywgZXRjLlxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUJlZ2luOjcsIC8vIGluIHVzZXIgbG9jYWwgdGltZVxuICAgIGhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZDoyMSwgLy8gaWRlbVxuICAgIG1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lOiA1MCwgLy8gZm9yIHN1YnNjcmlwdGlvbidzIGUtbWFpbGluZ1xuICAgIG1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzOiAzLFxuICAgIGZpZWxkTmV3UXVlc3Rpb25uYWlyZXMgOiBcInB1Ymxpc2hpbmdBdFwiLCAvLyBmaWVsZCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBxdWVzdGlvbm5haXJlcywgY2FuIGJlIFwiY3JlYXRlZEF0XCIsIFwidXBkYXRlZEF0XCIgb3IgXCJwdWJsaXNoaW5nQXRcIlxuICAgIC8vIEdyb3VwcyA6XG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW46IDEsXG4gICAgbmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNYXg6IDAsXG4gICAgLy8gSWxsdXN0cmF0aW9uczpcbiAgICBuYklsbHVzdHJhdGlvbnNNaW46IDEsXG4gICAgbmJJbGx1c3RyYXRpb25zTWF4OiAxLFxuICAgIG1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0OiAxMDAwMDAwLC8vIHBhcyBjb250csO0bMOpIHBvdXIgbCdpbnN0YW50LiDDgCByZXZvaXIuXG4gICAgbWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uOiBbIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2dpZlwiLCBcImltYWdlL3BuZ1wiIF0sXG4gICAgLy8gLS0gVXBsb2FkIGFuZCByZXNpemU6XG4gICAgaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeDogNTAwLFxuICAgIGlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4OiAyMDAsXG4gICAgLy8gTGlua3M6XG4gICAgbmJMaW5rc01pbjogMSxcbiAgICBuYkxpbmtzTWF4OiAwLFxuICAgIC8vIFF1ZXN0aW9ucyAmIHJlc3BvbnNlczpcbiAgICBuYlF1ZXN0aW9uc01pbjogMSxcbiAgICBuYlF1ZXN0aW9uc01heDogMCxcbiAgICBuYkNob2ljZXNNYXg6IDEwLFxuICAgIC8vIMOgIHN1cHByaW1lciBxdWFuZCB0b3VzIGxlcyBcInJlcXVpcmVcIiDDoCBqb3VyOlxuICAgIHBhc3N3b3JkTWluTGVuZ3RoOiB1c2Vycy5wYXNzd29yZC5taW5sZW5ndGgsXG4gICAgZGlyQ2FjaGVVc2VyczogdXNlcnMuZGlyQ2FjaGVVc2VycyxcbiAgICBkaXJDYWNoZVVzZXJzQW5zd2VyczogdXNlcnMuZGlyQ2FjaGVVc2Vyc0Fuc3dlcnMsXG4gICAgZGlyQ2FjaGVRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9uczogcXVlc3Rpb25uYWlyZXMuZGlyQ2FjaGVRdWVzdGlvbnMsXG4gICAgZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlySFRNTFF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJIVE1MUXVlc3Rpb25uYWlyZXMsXG4gICAgZGlyV2ViUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpcldlYlF1ZXN0aW9ubmFpcmVzXG59OyIsIi8vIFNpIG5vbiB1dGlsaXPDqSwgc3VwcHJpbWVyIGwnYXBwZWwgZGVzIEpTIGZyb250LWVuZCBwdWlzIHJlY29tcGlsZXIuXG4vLyBSZXZvaXIgY29tbWVudCByw6lvcmdhbmlzZXIgY2VsYSBzb3VzLWZvcm1lIGRlIG1vZHVsZSBpbmTDqXBlbmRhbnQuXG5tb2R1bGUuZXhwb3J0cyA9XG57XG4gICAgLy8gU3RhdHMgTWF0b21vIDpcbiAgICBtYXRvbW86IHsgdXJsOiBcImh0dHBzOi8vc3RhdHMubGUtZmFiLWxhYi5jb20vXCIsIHNpdGVJZDogXCI1XCIgfSxcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3VzZXJcIjogXCIuLi9sYW5nL2ZyL3VzZXIuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi4vbGFuZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qXFxcXC91c2VyJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbHJlYWR5Q29ubmVjdGVkOiBcIlZvdXMgw6p0ZXMgZMOpasOgIGNvbm5lY3TDqSBhdSBzaXRlICFcIixcbiAgICBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgbGllbiBkZSBjb25maXJtYXRpb24gbmUgc2VtYmxlIHBhcyB2YWxpZGUgb3UgYmllbiBpbCBhIGV4cGlyw6kuIFZvdXMgcG91dmV6IGVuIHJlY2V2b2lyIHVuIG5vdXZlYXUgPGEgaHJlZj0nI1VSTCc+ZW4gY2xpcXVhbnQgaWNpPC9hPi5cIixcbiAgICBiYWRQYXNzd29yZDogXCJBdWN1biBjb21wdGUgdXRpbGlzYXRldXIgbmUgY29ycmVzcG9uZCBhdXggaW5mb3JtYXRpb25zIHNhaXNpZXMuXCIsXG4gICAgYnllYnllTWVzc2FnZTogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBkw6ljb25uZXhpb24gcydlc3QgYmllbiBkw6lyb3Vsw6llLjxicj7DgCBiaWVudMO0dCAhXCIsIFxuICAgIGNvbm5lY3Rpb25PazogXCJDb25uZXhpb24gcsOpdXNzaWUuXCIsXG4gICAgY3JlYXRpb25Pa01lc3NhZ2U6IFwiTGUgbm91dmVsIHV0aWxpc2F0ZXVyIGEgYmllbiDDqXTDqSBlbnJlZ2lzdHLDqS5cIixcbiAgICBjcm9uRGVsZXRlVW52YWxpZGVkVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBub24gdmFsaWTDqXMgb250IMOpdMOpIHN1cHByaW3DqXMuXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2U6IFwiVGVudGF0aXZlIGRlIHN1cHByZXNzaW9uIGQndW4gdXRpbGlzYXRldXIgaW5leGlzdGFudCA6IFwiLFxuICAgIGRlbGV0ZUluYWN0aXZlVXNlcnNNZXNzYWdlOiBcIiBjb21wdGVzIHV0aWxpc2F0ZXVycyBpbmFjdGlmcyBvbnQgw6l0w6kgc3VwcHJpbcOpcy5cIixcbiAgICBkZWxldGVPa01lc3NhZ2U6IFwiTCd1dGlsaXNhdGV1ciBhIGJpZW4gw6l0w6kgc3VwcHJpbcOpLlwiLFxuICAgIGVtYWlsTm90Rm91bmQ6IFwiQXVjdW4gY29tcHRlIHV0aWxpc2F0ZXVyIG4nYSDDqXTDqSB0cm91dsOpIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWwuXCIsXG4gICAgZmFpbEJvdFRlc3Q6IFwiVW4gcHJvYmzDqG1lIGEgw6l0w6kgcmVuY29udHLDqSBkdXJhbnQgdm90cmUgaW5zY3JpcHRpb24uIEVuIGNhcyBkZSBkaWZmaWN1bHTDqSwgbidow6lzaXRleiBwYXMgY29udGFjdGVyIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZS5cIixcbiAgICBmYWlsQm90VGVzdExvZzogXCJVbmUgaW5zY3JpcHRpb24gYSDDqXTDqSBibG9xdcOpZSwgcGFyY2UgcXVlIGxlIGNoYW1wIGVtYWlsMiDDqXRhaXQgcmVuc2VpZ27DqSBhdmVjIDogXCIsXG4gICAgZm9ybXNFbWFpbExhYmVsOiBcIkUtbWFpbCA6XCIsXG4gICAgZm9ybXNFbWFpbFBsYWNlaG9sZGVyOiBcIlZvdHJlIGFkcmVzc2UgZS1tYWlsXCIsXG4gICAgZm9ybXNFbWFpbDJQbGFjZWhvbGRlcjogXCJTaSB2b3VzIHZveWV6IGNlIGNoYW1wLCBsYWlzc2V6LWxlIHZpZGVcIiwvL2NoYW1wIHF1aSBuZSBkZXZyYWl0IHBhcyDDqnRyZSB2aXNpYmxlIHBhciBkZXMgaHVtYWluc1xuICAgIGZvcm1zQ0dVT2tMYWJlbDogXCJKJ2FjY2VwdGUgPGEgaHJlZj0jbGluayB0YXJnZXQ9XFxcIl9ibGFua1xcXCIgcmVsPVxcXCJub29wZW5lclxcXCIgdGl0bGU9XFxcIsOAIGxpcmUgOilcXFwiPmxlcyBDb25kaXRpb25zIEfDqW7DqXJhbGUgZCdVdGlsaXNhdGlvbjwvYT4gZHUgc2l0ZSAocmVxdWlzKS5cIixcbiAgICBmb3Jtc1N1Ym1pdFR4dDogXCJKZSBtJ2Fib25uZSAhXCIsXG4gICAgZ29kZmF0aGVyRm91bmQ6IFwiVm90cmUgXFxcInBhcnJhaW5cXFwiIGEgYmllbiDDqXTDqSB0cm91dsOpLiBDZXR0ZSBwZXJzb25uZSBzZXJhIGF2ZXJ0aWUgcXVlIHZvdXMgbCdhdmV6IGTDqXNpZ27DqWUuXCIsXG4gICAgZ29kZmF0aGVyTm90Rm91bmQ6IFwiRMOpc29sw6kgbWFpcyBhdWN1biB1dGlsaXNhdGV1ciBuJ2Egw6l0w6kgdHJvdXbDqSBwb3VyIGNlIGNvZGUgLyBlLW1haWwgZGUgcGFycmFpbmFnZSA6KFwiLFxuICAgIGluZm9zQWRtaW5Hb2RmYXRoZXI6IFwiQ2V0IHV0aWxpc2F0ZXVyIGEgw6l0w6kgcGFycmFpbsOpIHBhciBcIixcbiAgICBpbmZvc0FkbWluTmJHb2RDaGlsZHM6IFwiU2VzICNOQiBmaWxsZXVscyA6IFwiLFxuICAgIGluZm9zVXNlckZvckFkbWluOiBcIkNldCB1dGlsaXNhdGV1ciAoaWQ6IElEX1VTRVIpIGEgPGI+Y3LDqcOpIHNvbiBjb21wdGUgbGUgREFURV9DUkVBPC9iPiwgbGEgZGVybmnDqHJlIG1pc2Ugw6Agam91ciBkYXRhbnQgZHUgREFURV9VUERBVEUuPGJyPjxiPkRhdGUgZGUgc2EgZGVybmnDqHJlIGNvbm5leGlvbiA6IERBVEVfQ09OTkVDVElPTi48L2I+XCIsXG4gICAgaW5mb3NVc2VyTmJHb2RDaGlsZHM6IFwiVm9pY2kgbGVzICNOQiB1dGlsaXNhdGV1cihzKSBpbnNjcml0KHMpIGVuIHZvdXMgZMOpc2lnbmFudCBjb21tZSBcXFwicGFycmFpblxcXCIgOiBcIixcbiAgICBpbmZvc1VzZXJOb0dvZGNoaWxkczogXCJQb3VyIGwnaW5zdGFudCwgYXVjdW5lIHBlcnNvbm5lIG5lIHMnZXN0IGluc2NyaXRlLCBlbiB2b3VzIGTDqXNpZ25hbnQgY29tbWUgXFxcInBhcnJhaW5cXFwiLlwiLFxuICAgIG1haWxEZWxldGVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciBjb25maXJtZXIgbGEgc3VwcHJlc3Npb24gZGUgdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxEZWxldGVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Qb3VyIGNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUsIGNsaXF1ZXogc3VyIGxlIGxpZW4gc3VpdmFudCBzYW5zIHRhcmRlciA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRGVsZXRlTGlua0FscmVhZHlNZXNzYWdlOiBcIklsIHNlbWJsZSBxdWUgdm91cyBheWV6IGTDqWrDoCB2YWxpZMOpIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBtYWlsRGVsZXRlTGlua0ZhaWxNZXNzYWdlOiBcIlZvdHJlIGxpZW4gZGUgc3VwcHJlc3Npb24gbidlc3QgcGFzIHZhbGlkZSBvdSBhbG9ycyBpbCBhIGV4cGlyw6kuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtNZXNzYWdlOiBcIlZvdHJlIGRlbWFuZGUgZGUgc3VwcHJlc3Npb24gYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS4gTWVyY2kgZGUgY2xpcXVlciBzYW5zIHRhcmRlciBzdXIgbGUgbGllbiBxdWkgdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwgcG91ciBjb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZUxpbmtPa01lc3NhZ2U6IFwiVm90cmUgY29tcHRlIGEgYmllbiDDqXTDqSBzdXBwcmltw6kuIE1lcmNpIGQnYXZvaXIgdXRpbGlzw6kgbm9zIHNlcnZpY2VzLlwiLFxuICAgIG1haWxEZWxldGVMaW5rVHh0IDogXCJDb25maXJtZXIuXCIsXG4gICAgbWFpbERlbGV0ZVN1YmplY3QgOiBcIkNvbmZpcm1lciBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBjb21wdGUuXCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZvdXMgY29ubmVjdGVyIMOgIHZvdHJlIGNvbXB0ZSwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDo8L3A+XCIsXG4gICAgbWFpbExvZ2luTGlua0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlLCBjbGlxdWV6IHN1ciBsZSBsaWVuIHN1aXZhbnQgc2FucyB0YXJkZXIgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbExvZ2luTGlua01lc3NhZ2UgOiBcIlVuIGxpZW4gZGUgY29ubmV4aW9uIHZpZW50IGRlIHZvdXMgw6p0cmUgZW52b3nDqSBzdXIgdm90cmUgYWRyZXNzZSBlLW1haWwuIE5lIHRhcmRleiBwYXMgw6AgbCd1dGlsaXNlciwgY2FyIGlsIG4nZXN0IHZhbGFibGUgcXVlIGR1cmFudCAqVElNSU5HKiAhXCIsXG4gICAgbWFpbExvZ2luTGlua1N1YmplY3QgOiBcIlZvdHJlIGxpZW4gZGUgY29ubmV4aW9uLlwiLFxuICAgIG1haWxMb2dpbkxpbmtUeHQgOiBcIk1lIGNvbm5lY3Rlci5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+R3LDomNlIMOgIHZvdXMsIHVuIG5vdXZlbCB1dGlsaXNhdGV1ciAoRU1BSUwpIHZpZW50IGRlIHMnaW5zY3JpcmUgc3VyIE5PTV9TSVRFLjxicj5TaSBkYW5zIGwnYXZlbmlyIGNldHRlIHBlcnNvbm5lIHNvdXNjcml0IHVuIGFib25uZW1lbnQgcHLDqW1pdW0sIHZvdHJlIHByb3ByZSBhYm9ubmVtZW50IHNlcmEgcHJvbG9uZ8OpIGRlIDMwIGpvdXJzLjwvcD48cD5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgITwvcD5cIixcbiAgICBtYWlsVGhhbmtHb2RmYXRoZXJCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5HcsOiY2Ugw6Agdm91cywgdW4gbm91dmVsIHV0aWxpc2F0ZXVyIChFTUFJTCkgdmllbnQgZGUgcydpbnNjcmlyZSBzdXIgTk9NX1NJVEUuXFxuU2kgZGFucyBsJ2F2ZW5pciBjZXR0ZSBwZXJzb25uZSBzb3VzY3JpdCB1biBhYm9ubmVtZW50IHByw6ltaXVtLCB2b3RyZSBwcm9wcmUgYWJvbm5lbWVudCBzZXJhIHByb2xvbmfDqSBkZSAzMCBqb3Vycy5cXG5FbmNvcmUgbWVyY2kgZXQgw6AgYmllbnTDtHQgIVwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlckxpbmtUeHQgOiBcIk1lIGNvbm5lY3RlciDDoCBtb24gY29tcHRlLlwiLFxuICAgIG1haWxUaGFua0dvZGZhdGhlclN1YmplY3QgOiBcIk1lcmNpICFcIixcbiAgICBtYWlsVXBkYXRlTG9naW5Cb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+UG91ciB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uLCBjbGlxdWV6IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMgc2FucyB0YXJkZXIuPC9wPlwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkJvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciB2b3Mgbm91dmVhdXggaWRlbnRpZmlhbnRzIGRlIGNvbm5leGlvbiwgY2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHNhbnMgdGFyZGVyIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxVcGRhdGVMb2dpbkxpbmtNZXNzYWdlOiBcIkNlcGVuZGFudCwgdm91cyBhdmV6IG1vZGlmacOpIGF1IG1vaW5zIHVuIGRlIHZvcyBpZGVudGlmaWFudHMgZGUgY29ubmV4aW9uIChlLW1haWwgZXQvb3UgbW90IGRlIHBhc3NlKSBldCA8Yj52b3VzIGRldmV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gcXVpIHZpZW50IGRlIHZvdXMgw6p0cmVzIGVudm95w6kgc3VyIHZvdHJlIGFkcmVzc2UgKE5FV19FTUFJTCkgcG91ciB2YWxpZGVyIGNlIGNoYW5nZW1lbnQ8L2I+Ljxicj5FbiBhdHRlbmRhbnQsIG1lcmNpIGRlIGNvbnRpbnVlciDDoCB1dGlsaXNlciB2b3MgYW5jaWVucyBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFVwZGF0ZUxvZ2luTGlua1R4dCA6IFwiVmFsaWRlci5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5Pa01lc3NhZ2U6IFwiTGEgbWlzZSDDoCBqb3VyIGRlIHZvcyBpZGVudGlmaWFudHMgYSBiaWVuIMOpdMOpIGVucmVnaXN0csOpZS5cIixcbiAgICBtYWlsVXBkYXRlTG9naW5TdWJqZWN0IDogXCJNZXJjaSBkZSB2YWxpZGVyIHZvcyBub3V2ZWF1eCBpZGVudGlmaWFudHMuXCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlIVE1MIDogXCI8aDM+Qm9uam91ciBVU0VSX05BTUUsPC9oMz48cD5Qb3VyIHZhbGlkZXIgZXQgY29tcGzDqXRlciB2b3RyZSBpbnNjcmlwdGlvbiwgbWVyY2kgZGUgY2xpcXVlciBzdXIgbGUgbGllbiBjaS1kZXNzb3VzIGRhbnMgbGVzIDI0aC48L3A+XCIsXG4gICAgbWFpbFZhbGlkYXRpb25MaW5rU0JvZHlUeHQgOiBcIkJvbmpvdXIgVVNFUl9OQU1FLFxcblxcblBvdXIgdmFsaWRlciBldCBjb21wbMOpdGVyIHZvdHJlIGluc2NyaXB0aW9uLCBtZXJjaSBkZSBjbGlxdWVyIHN1ciBsZSBsaWVuIHN1aXZhbnQgZGFucyBsZXMgMjRoIDpcXG5MSU5LX1VSTFwiLFxuICAgIG1haWxWYWxpZGF0aW9uTGlua1N1YmplY3QgOiBcIk1lcmNpIGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb25cIixcbiAgICBtYWlsVmFsaWRhdGlvbkxpbmtUeHQgOiBcIlZhbGlkZXIgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsVmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgaW5zY3JpcHRpb24gZXN0IGJpZW4gZW5yZWdpc3Ryw6llLlxcblBvdXIgbGEgZmluYWxpc2VyLCBtZXJjaSBkZSBjbGlxdWVyIGRhbnMgbGVzIDI0IEggc3VyIGxlIGxpZW4gZGUgY29uZmlybWF0aW9uIHF1aSB2aWVudCBkJ8OqdHJlIGVudm95w6kgw6Agdm90cmUgYWRyZXNzZSBlLW1haWwgKCNFTUFJTCkuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5SFRNTCA6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm91cyB2ZW5leiBkZSB2YWxpZGVyIHZvdHJlIGluc2NyaXB0aW9uIMOgIE5PTV9TSVRFLiBNZXJjaSBldCBiaWVudmVudWUgITxicj48YnI+U2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIDxiPkVNQUlMPC9iPi48YnI+PGJyPkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIDxiPkVNQUlMPC9iPiDDoCB2b3RyZSBjYXJuZXQgZCdhZHJlc3NlcyA8Yj5wb3VyIMOpdml0ZXIgcXVlIGxlcyBwcm9jaGFpbnMgZW52b2lzIGRlIE5PTV9TSVRFIG4nYXJyaXZlbnQgZW4gPGk+c3BhbTwvaT48L2I+Ljxicj48YnI+UGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuPGJyPjxicj5Qb3VyIGNlIGZhaXJlLCB1dGlsaXNleiBsZSBsaWVuIGNpLWRlc3NvdXMuPGJyPjxicj7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVCb2R5VHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3VzIHZlbmV6IGRlIHZhbGlkZXIgdm90cmUgaW5zY3JpcHRpb24gw6AgTk9NX1NJVEUuIE1lcmNpIGV0IGJpZW52ZW51ZSAhXFxuXFxuU2kgdm91cyBhdmV6IGxhIG1vaW5kcmUgcXVlc3Rpb24gb3Ugc3VnZ2VzdGlvbiBjb25jZXJuYW50IE5PTV9TSVRFLCBuJ2jDqXNpdGV6IHBhcyDDoCBtZSBjb250YWN0ZXIgZW4gw6ljcml2YW50IMOgIEVNQUlMLlxcblxcbkplIHZvdXMgY29uc2VpbGxlIGQnYWlsbGV1cnMgZCdham91dGVyIEVNQUlMIMOgIHZvdHJlIGNhcm5ldCBkJ2FkcmVzc2VzIHBvdXIgw6l2aXRlciBxdWUgbGVzIHByb2NoYWlucyBlbnZvaXMgZGUgTk9NX1NJVEUgbidhcnJpdmVudCBlbiBcXFwic3BhbVxcXCIuXFxuXFxuUGFyIGFpbGxldXJzLCBwb3VyIGfDqXJlciB2b3RyZSBhYm9ubmVtZW50LCBhY2PDqWRlciDDoCB2b3MgaW5mb3JtYXRpb25zIG91IGVuY29yZSBjaGVyY2hlciBwbHVzIGZhY2lsZW1lbnQgcGFybWkgbGUgY29udGVudSBkdSBzaXRlLCB2b3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCB2b3VzIGNvbm5lY3RlciDDoCB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXIuXFxuXFxuUG91ciBjZSBmYWlyZSwgdXRpbGlzZXogbGUgbGllbiBzdWl2YW50IDogTElOS19VUkxcXG5cXG7DgCBiaWVudMO0dCBzdXIgTk9NX1NJVEUuXCIsXG4gICAgbWFpbFdlbGNvbWVMaW5rVHh0IDogXCJNZSBjb25uZWN0ZXIgw6AgbW9uIGNvbXB0ZS5cIixcbiAgICBtYWlsV2VsY29tZVN1YmplY3QgOiBcIkJpZW52ZW51ZSAhXCIsXG4gICAgbmVlZEJlQ29ubmVjdGVkOiBcIlZvdXMgZGV2ZXogw6p0cmUgY29ubmVjdMOpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgcGFnZS5cIixcbiAgICBuZWVkQ2hvb3NlTG9naW5XYXk6IFwiVm91cyBkZXZleiBzb2l0IHNhaXNpciB2b3RyZSBtb3QgZGUgcGFzc2UsIHNvaXQgY29jaGVyIGxhIGNhc2Ugdm91cyBwZXJtZXR0YW50IGRlIHJlY2V2b2lyIHVuIGxpZW4gZGUgY29ubmV4aW9uIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZEVtYWlsOiBcIk1lcmNpIGRlIHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbC5cIixcbiAgICBuZWVkS25vd05ld3NsZXR0ZXJPayA6IFwiSWwgZmF1dCBzYXZvaXIgc2kgbCd1dGlsaXNhdGV1ciBhY2NlcHRlIG91IHJlZnVzZSBkZSByZWNldm9pciBsYSBuZXdzbGV0dGVyLlwiLFxuICAgIG5lZWRMYW5ndWFnZSA6IFwiSWwgbWFucXVlIGxlIGNvZGUgbGFuZ3VlLlwiLFxuICAgIG5lZWRMb25nUGFzc1dvcmQgOiBcIk1lcmNpIGRlIGZvdXJuaXIgdW4gbW90IGRlIHBhc3NlIGQnYXUgbW9pbnMgTUlOX0xFTkdUSCBjYXJhY3TDqHJlcy5cIixcbiAgICBuZWVkTWF4VGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBham91dGVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDg0MC5cIixcbiAgICBuZWVkTWluVGltZURpZmZlcmVuY2UgOiBcIklsIGZhdXQgZm91cm5pciB1biBub21icmUgZGUgbWludXRlcyDDoCBlbmxldmVyIMOgIGwnaGV1cmUgR01UIG5lIGTDqXBhc3NhbnQgcGFzIDcyMC5cIixcbiAgICBuZWVkTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyLlwiLFxuICAgIG5lZWROb3RUb29Mb25nTmFtZTogXCJNZXJjaSBkZSBjaG9pc2lyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIG5lIGNvbXB0YW50IHBhcyBwbHVzIGRlIDcwIGNhcmFjdMOocmVzLlwiLFxuICAgIG5lZWROb3RUb29Mb25nRW1haWw6IFwiTWVyY2kgZGUgc2Fpc2lyIHVuZSBhZHJlc3NlIGUtbWFpbCBuZSBjb21wdGFudCBwYXMgcGx1cyBkZSAyNTUgY2FyYWN0w6hyZXMuXCIsXG4gICAgbmVlZFBhc3NXb3JkIDogXCJNZXJjaSBkZSBmb3VybmlyIHVuIG1vdCBkZSBwYXNzZS5cIixcbiAgICBuZWVkU01UUCA6IFwiSWwgbWFucXVlIGxlIHNlcnZldXIgU01UUC5cIixcbiAgICBuZWVkU01UUE5vdEZvdW5kIDogXCJJbCBtYW5xdWUgdW4gc2VydmV1ciBTTVRQIHZhbGlkZS5cIixcbiAgICBuZWVkU3RhdHVzIDogXCJJbCBtYW5xdWUgbGUgc3RhdHV0LlwiLFxuICAgIG5lZWRUaW1lRGlmZmVyZW5jZSA6IFwiSWwgZmF1dCBjb25uYcOudHJlIGxlIG5vbWJyZSBkZSBtaW51dGVzIGR1IGTDqWNhbGFnZSBob3JhaXJlLlwiLFxuICAgIG5lZWRVR0NPayA6IFwiTWVyY2kgZCdhY2NlcHRlciBsZXMgQ0dVIHBvdXIgY3LDqWVyIHZvdHJlIGNvbXB0ZS5cIixcbiAgICBuZWVkVW5pcXVlRW1haWw6IFwiTCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyBhdmV6IHNhaXNpZSBlc3QgZMOpasOgIHV0aWxpc8OpZSBwb3VyIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ci4gU2kgdm91cyBhdmV6IGTDqWrDoCB1biBjb21wdGUsIDxhIGhyZWY9Jy8jVVJMJz5jbGlxdWV6LWljaSBwb3VyIHZvdXMgY29ubmVjdGVyPC9hPi5cIixcbiAgICBuZWVkVmFsaWRhdGlvblRvTG9naW4gOiBcIlZvdXMgZGV2ZXogZCdhYm9yZCB2YWxpZGVyIHZvdHJlIGNvbXB0ZSBhdmFudCBkZSBwb3V2b2lyIHZvdXMgY29ubmVjdGVyLiBQb3VyIGNlIGZhaXJlLCB1biBub3V2ZWF1IGxpZW4gdmllbnQgZGUgdm91cyDDqnRyZSBlbnZvecOpIHBhciBlLW1haWwuXCIsXG4gICAgbmVlZFZhbGlkTGFzdENvbm5lY3Rpb25EYXRlIDogXCJMYSBkYXRlIGRlIGRlcm5pw6hyZSBjb25uZXhpb24gbidlc3QgcGFzIHZhbGlkZS5cIixcbiAgICBwYXNzd29yZENvcGllZDogXCJMZSBtb3QgZGUgcGFzc2UgZ8OpbsOpcsOpIGEgw6l0w6kgY29wacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBvcmRpbmF0ZXVyIChvdSBtb2JpbGUpLiBWb3VzIHBvdXZleiBsZSBcXFwiY29sbGVyXFxcIiBvw7kgdm91cyBsZSBzb3VoYWl0ZXouXCIsXG4gICAgc2VhcmNoVXNlcnNXaXRob3V0UmVzdWx0OiBcIkwndXRpbGlzYXRldXIgbidhIHBhcyDDqXTDqSB0cm91dsOpLlwiLFxuICAgIHRvb01hbnlMb2dpbkZhaWxzIDogXCJEw6lzb2zDqSBtYWlzIGlsIHkgYSBldSB0cm9wIGRlIHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uIGluZnJ1Y3R1ZXVzZXMgcG91ciBjZXR0ZSBhZHJlc3NlIGUtbWFpbC4gVm91cyBkZXZleiBhdHRlbmRyZSBNSU5VVEVTIG1pbnV0ZXMgcG91ciBlc3NheWVyIGRlIG5vdXZlYXUuXCIsXG4gICAgdXBkYXRlZEZhaWxlZEdvZGZhdGhlck5vdEZvdW5kIDogXCJMJ2lkZW50aWZpYW50IGZvdXJuaSBwb3VyIGxlIHBhcnJhaW4gbmUgY29ycmVzcG9uZCDDoCBhdWN1biB1dGlsaXNhdGV1ci5cIixcbiAgICB1cGRhdGVkTmVlZEdvb2RFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBuJ2EgcHUgw6p0cmUgZW5yZWdpc3Ryw6llLCBjYXIgZWxsZSBuJ2EgcGFzIHVuIGZvcm1hdCBjb3JyZWN0LlwiLFxuICAgIHVwZGF0ZWROZWVkR29vZEdvZGZhdGhlciA6IFwiTWFpcyBsZSBub3V2ZWF1IGNvZGUgcGFycmFpbiBuJ2EgcHUgw6p0cmUgcmV0ZW51LCBjYXIgaWwgbmUgY29ycmVzcG9uZCDDoCBhdWN1biBjb21wdGUgdXRpbGlzYXRldXIgb3Ugw6AgbCd1dGlsaXNhdGV1ciBsdWktbcOqbWUuXCIsXG4gICAgdXBkYXRlZE5lZWRVbmlxdWVFbWFpbCA6IFwiTWFpcyBsYSBub3V2ZWxsZSBhZHJlc3NlIGUtbWFpbCBzYWlzaWUgKE5FV19FTUFJTCkgbidhIHB1IMOqdHJlIGVucmVnaXN0csOpZSwgY2FyIGVsbGUgZXN0IGTDqWrDoCB1dGlsaXPDqWUgcG91ciB1biBhdXRyZSBjb21wdGUuXCIsXG4gICAgdXBkYXRlZE5lZWRWYWxpZGF0ZWRVc2VyOiBcIkwndXRpbGlzYXRldXIgcXVlIHZvdXMgc291aGFpdGV6IG1vZGlmaWVyIG4nZXhpc3RlIHBhcy9wbHVzIG91IG4nYSBwYXMgZW5jb3JlIHZhbGlkw6kgc29uIGNvbXB0ZS5cIixcbiAgICB1cGRhdGVkT2tNZXNzYWdlOiBcIlZvcyBpbmZvcm1hdGlvbnMgb250IGJpZW4gw6l0w6kgbWlzZXMgw6Agam91ci5cIixcbiAgICB2YWxpZGF0aW9uQWxyZWFkeU1lc3NhZ2U6IFwiSWwgc2VtYmxlIHF1ZSB2b3VzIGF5ZXogZMOpasOgIHZhbGlkw6kgdm90cmUgY29tcHRlLiBWb3VzIHBvdXZleiB2b3VzIHkgY29ubmVjdGVyIDxhIGhyZWY9JyNVUkwnPmVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgdmFsaWRhdGlvbkFscmVhZHlNZXNzYWdlQWRtaW46IFwiQ2UgY29tcHRlIGEgZMOpasOgIMOpdMOpIHZhbGlkw6kuXCIsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IFwiVm90cmUgY29tcHRlIHZpZW50IGJpZW4gZCfDqnRyZSB2YWxpZMOpLiBNZXJjaSBldCBiaWVudmVudWUgITxicj5Wb3VzIHBvdXZleiBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgdm90cmUgYWJvbm5lbWVudCBjaS1kZXNzb3VzLlwiLFxuICAgIHZhbGlkYXRpb25NZXNzYWdlQWRtaW46IFwiTGUgY29tcHRlIGEgYmllbiDDqXTDqSB2YWxpZMOpLlwiLFxuICAgIHdlbGNvbWVNZXNzYWdlOiBcIkJpZW52ZW51ZSAjTkFNRSAhXCJcbn07IiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIC0tIFBBR0UgUEVSTUVUVEFOVCBERSBWQUxJREVSIExBIENSw4lBVElPTiBERSBTT04gQ09NUFRFLCBQVUlTIERFIENPTVBMw4lURVIgU09OIElOU0NSSVBUSU9OXG5cbi8vLyBVbiB0b2tlbiBlc3QgdHJhbnNtaXMgZW4gcGFyYW3DqHRyZSBkZSBsJ1VybC4gSWwgYSB1bmUgdmFsaWRpdMOpIGxpbWl0w6kgZGFucyBsZSB0ZW1wcy5cbi8vLyBTaSBsZSB0b2tlbiBuJ2VzdCBwYXMvcGx1cyB2YWxpZGUsIG9uIHJlZGlyaWdlIGwndXRpbGlzYXRldXIgdmVycyBsYSBwYWdlIGRlIGNvbm5leGlvbiBwb3VyIG9idGVuaXIgdW4gbm91dmVhdSBsaWVuLlxuLy8vIFNpIGxlIHRva2VuIGVzdCBvaywgb24gbCdpbmZvcm1lIHF1ZSB0b3V0IGVzdCBvayBldCBsdWkgcHJvcG9zZSBkZSBzZSBjb21wbMOpdGVyIGxlcyBpbmZvcm1hdGlvbnMgZGUgc29uIGNvbXB0ZS4gVW5lIHNlc3Npb24gbHVpIGVzdCDDqWdhbGVtZW50IGNyw6nDqWUuXG4vLy8gU2kgbCd1dGlsaXNhdGV1ciBhIGTDqWrDoCB1bmUgc2Vzc2lvbiBhY3RpdmUgdmFsaWRlLCBjJ2VzdCBxdSdpbCBhIGTDqWrDoCBjbGlxdcOpIHN1ciBsZSBsaWVuLiBPbiBsZSByZWRpcmlnZSB2ZXJzIHNhIHBhZ2UgZCdhY2N1ZWlsLlxuXG4vLyBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gdGlyw6lzIGR1IGJhY2tlbmQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUsIHRva2VuQ29ubmV4aW9uTWluVGltZUluSG91cnMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5jb25zdCBjb25maWdVc2VycyA9IHJlcXVpcmUoXCIuLi8uLi9jb25maWcvdXNlcnNcIik7IC8vIGJlc29pbiBkZSB0b3VzIGxlIGZpY2hpZXIgcG91ciBjb25maWd1cmVyIGxlIGZvcm11bGFpcmUgZGUgc2Fpc2llLCBldGMuXG5cbi8vIEltcG9ydGF0aW9uIGRlcyBmb25jdGlvbnMgdXRpbGVzIGF1IHNjcmlwdCA6XG5pbXBvcnQgeyBnZXRMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldERhdGFzRnJvbUlucHV0cywgc2V0QXR0cmlidXRlc1RvSW5wdXRzIH0gZnJvbSBcIi4vdG9vbHMvZm9ybXMuanNcIjtcbmltcG9ydCB7IGdldFBhc3N3b3JkIH0gZnJvbSBcIi4uLy4uL3Rvb2xzL21haW5cIjtcbmltcG9ydCB7IGxvYWRNYXRvbW8gfSBmcm9tIFwiLi90b29scy9tYXRvbW8uanNcIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IG5vdFJlcXVpcmVkLCBzZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9nZW5lcmFsXCIpO1xuY29uc3QgeyBhbHJlYWR5Q29ubmVjdGVkLCBiYWRMaW5rVmFsaWRhdGlvbk1lc3NhZ2UsIGdvZGZhdGhlckZvdW5kLCBnb2RmYXRoZXJOb3RGb3VuZCwgcGFzc3dvcmRDb3BpZWQsIHZhbGlkYXRpb25NZXNzYWdlIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL3VzZXJcIik7XG5cbi8vIFByaW5jaXBhdXggw6lsw6ltZW50cyBkdSBET00gbWFuaXB1bMOpcyA6XG4vL2NvbnN0IGNvZGVHb2RmYXRoZXJJbnB1dD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVHb2RmYXRoZXJcIik7XG5jb25zdCBkaXZFeHBsYW5hdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4cGxhbmF0aW9uc1wiKTtcbmNvbnN0IGRpdk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1lc3NhZ2VcIik7XG5jb25zdCBkaXZSZXNwb25zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVzcG9uc2VcIik7XG5jb25zdCBmb3JtQWNjb3VudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3Vic2NyaXB0aW9uMlwiKTtcbmNvbnN0IHBhc3N3b3JkSW5wdXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJuZXdQYXNzd29yZFwiKTtcbmNvbnN0IHBhc3N3b3JkTGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdldFBhc3N3b3JkXCIpO1xuY29uc3QgcGFzc3dvcmRIZWxwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGFzc3dvcmRNZXNzYWdlXCIpO1xuXG5jb25zdCBpbml0aWFsaXNlID0gYXN5bmMgKCkgPT5cbntcbiAgICB0cnlcbiAgICB7XG4gICAgICAgIC8vIEV4cGxpY2F0aW9ucyBjYWNow6llcyBwYXIgZMOpZmF1dCA6XG4gICAgICAgIGRpdkV4cGxhbmF0aW9ucy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO1xuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZD1hd2FpdCBjaGVja1Nlc3Npb24oKTtcbiAgICAgICAgaWYoaXNDb25uZWN0ZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogYWxyZWFkeUNvbm5lY3RlZCwgY29sb3I6XCJpbmZvXCIgfSk7XG4gICAgICAgICAgICBjb25zdCB1c2VyPWdldExvY2FseShcInVzZXJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBob21lUGFnZT11c2VyLnN0YXR1cytcIkhvbWVQYWdlXCI7Ly8gbG9ycyBkZSBsYSBjcsOpYXRpb24gZCd1biBjb21wdGUsIHNldWwgbGUgc3RhdHV0IFwidXNlclwiIGVzdCBwb3NzaWJsZS5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxvYWRNYXRvbW8oKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFzPWdldFVybFBhcmFtcygpO1xuICAgICAgICAgICAgaWYoZGF0YXMgJiYgZGF0YXMudCE9PXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5jaGVja1N1YnNjcmliZVRva2VuUm91dGUrZGF0YXMudCk7XG4gICAgICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDAgJiYgcmVzcG9uc2UubmV3VXNlciAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UudG9rZW4gIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2TWVzc2FnZSwgXCJwXCIsIHZhbGlkYXRpb25NZXNzYWdlLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZmZpY2hhZ2UgZXQgaW5pdGlhbGlzYXRpb24gZHUgZm9ybXVsYWlyZSBwZXJtZXR0YW50IGRlIGNvbXBsw6l0ZXIgbGVzIGluZm9zIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQWNjb3VudC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZFeHBsYW5hdGlvbnMuc3R5bGUuZGlzcGxheT1cImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlc1RvSW5wdXRzKGNvbmZpZ1VzZXJzLCBmb3JtQWNjb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWZmaWNoYWdlIGRlcyBpbmZvcyBkw6lqw6AgZW5yZWdpc3Ryw6llcyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBkYXRhIGluIHJlc3BvbnNlLm5ld1VzZXIuVXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZvcm1BY2NvdW50LmVsZW1lbnRzW2RhdGFdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbZGF0YV0udmFsdWU9cmVzcG9uc2UubmV3VXNlci5Vc2VyW2RhdGFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKb3VycyBkZSByw6ljZXB0aW9uIGRlIGwnYWJvbm5lbm1lbnQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaSBpbiByZXNwb25zZS5uZXdVc2VyLlN1YnNjcmlwdGlvbi5yZWNlaXB0RGF5cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUFjY291bnQuZWxlbWVudHNbXCJkXCIrcmVzcG9uc2UubmV3VXNlci5TdWJzY3JpcHRpb24ucmVjZWlwdERheXNbaV1dLmNoZWNrZWQ9XCJjaGVja2VkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2VydGFpbnMgbmF2aWdhdGV1cnMgcmVtcGxpc3NlbnQgYXV0b21hdGlxdWVtZW50IGxlcyBjaGFtcHMgcGFzc3dvcmQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQudmFsdWU9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDcsOpYXRpb24gZCd1bmUgc2Vzc2lvbiBjb3VydGUgYXZlYyBsZSB0b2tlbiByZcOndSAobsOpY2Vzc2FpcmUgcG91ciBsYSBzdWl0ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25uZXhpb25NYXhUaW1lPURhdGUubm93KCkrcGFyc2VJbnQodG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycywxMCkqMzYwMCoxMDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlc3Npb24ocmVzcG9uc2UubmV3VXNlci5Vc2VyLmlkLCByZXNwb25zZS50b2tlbiwgY29ubmV4aW9uTWF4VGltZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgodGhpcy5zdGF0dXMgPT09IDIwMCB8fCB0aGlzLnN0YXR1cyA9PT0gNDA0KSAmJiByZXNwb25zZS5lcnJvcnMgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZXJyb3JzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzLmpvaW4oXCI8YnI+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JzID0gc2VydmVyRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZNZXNzYWdlLCBcInBcIiwgYmFkTGlua1ZhbGlkYXRpb25NZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGNvbmZpZ1RlbXBsYXRlLmNvbm5lY3Rpb25QYWdlKSwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBHw6luw6lyZSB1biBtb3QgZGUgcGFzc2UgcHNldWRvLWFsw6lhdG9pcmUgOlxuICAgICAgICAgICAgICAgIHBhc3N3b3JkTGluay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC50eXBlPVwidGV4dFwiO1xuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZElucHV0LnZhbHVlPWdldFBhc3N3b3JkKDgsIDEyKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29waWUgZHUgbW90IGRlIHBhc3NlIGfDqW7DqXLDqSBkYW5zIGxlIFwicHJlc3NlLXBhcGllclwiIGRlIGwnb3JkaW5hdGV1ciA6XG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChwYXNzd29yZEhlbHAsIFwiZGl2XCIsIHBhc3N3b3JkQ29waWVkLCBcIlwiLCBbXCJzdWNjZXNzXCJdKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgLy8gVsOpcmlmaWUgcXVlIGxlIGNvZGUvZS1tYWlsIGRlIHBhcnJhaW5hZ2Ugc2Fpc2kgZXN0IHZhbGlkZSA6XG4gICAgICAgICAgICAgICAgY29kZUdvZGZhdGhlcklucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2RlVmFsdWU9Y29kZUdvZGZhdGhlcklucHV0LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoY29kZVZhbHVlIT09XCJcIilcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHIub3BlbihcIlBPU1RcIiwgYXBpVXJsK2NvbmZpZ1VzZXJzLnVzZXJSb3V0ZXMrY29uZmlnVXNlcnMuZ2V0R29kZmF0aGVyUm91dGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2RlR29kZmF0aGVyTWVzc2FnZVwiKSwgXCJkaXZcIiwgZ29kZmF0aGVyTm90Rm91bmQsIFwiXCIsIFtcImVycm9yXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVHb2RmYXRoZXJNZXNzYWdlXCIpLCBcImRpdlwiLCBnb2RmYXRoZXJGb3VuZCwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7ICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhcz17IGNvZGVUZXN0OmNvZGVWYWx1ZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YXMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIEVmZmFjZSBsJ8OpdmVudHVlbCBtZXNzYWdlIGTDqWrDoCBpbmplY3TDqSBzaSBsJ3V0aWxpc2F0ZXVyIHJldmllbnQgc3VyIGNlIGNoYW1wIGRlIHNhaXNpZSA6XG4gICAgICAgICAgICAgICAgY29kZUdvZGZhdGhlcklucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBmdW5jdGlvbihlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVHb2RmYXRoZXJNZXNzYWdlXCIpLCBcImlcIiwgbm90UmVxdWlyZWQpO1xuICAgICAgICAgICAgICAgIH0pOyovXG5cbiAgICAgICAgICAgICAgICAvLyBUcmFpdGUgZGUgbCdlbnZvaSBkJ3VuZSBtaXNlIMOgIGpvdXIgZGVzIGluZm9zIDpcbiAgICAgICAgICAgICAgICBmb3JtQWNjb3VudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGZ1bmN0aW9uKGUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGRpdlJlc3BvbnNlLmlubmVySFRNTD1cIlwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXM9Z2V0RGF0YXNGcm9tSW5wdXRzKGZvcm1BY2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVjb21wb3NpdGlvbiBkZXMgam91cnMgZCdlbnZvaSBkZSBsJ2Fib25uZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMucmVjZWlwdERheXM9XCJcIjtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTE7IGk8PTc7IGkrKylcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXNbXCJkXCIraV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcy5yZWNlaXB0RGF5cys9XCJcIitpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXI9Z2V0TG9jYWx5KFwidXNlclwiLCB0cnVlKTsvLyBvbiBhIGNyw6nDqSBsYSBzZXNzaW9uICsgaGF1dFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB4aHJVc2VyVXBkYXRlID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub3BlbihcIlBVVFwiLCBhcGlVcmwrY29uZmlnVXNlcnMudXNlclJvdXRlcytjb25maWdVc2Vycy5zaWdudXBDb21wbGV0aW9uUm91dGUrdXNlci5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gMjAwICYmIHJlc3BvbnNlLm1lc3NhZ2UgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocmVzcG9uc2UubWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIHsgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSwgY29sb3I6XCJzdWNjZXNzXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oY29uZmlnVGVtcGxhdGVbXCJ1c2VySG9tZVBhZ2VcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHJlc3BvbnNlLmVycm9ycykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSByZXNwb25zZS5lcnJvcnMuam9pbihcIjxicj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNlcnZlckVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KGRpdlJlc3BvbnNlLCBcInBcIiwgcmVzcG9uc2UuZXJyb3JzLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgeGhyVXNlclVwZGF0ZS5zZXRSZXF1ZXN0SGVhZGVyKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIit1c2VyLnRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YXMpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoclVzZXJVcGRhdGUuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2goZSlcbiAgICB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCBzZXJ2ZXJFcnJvciwgXCJcIiwgW1wiZXJyb3JcIl0pO1xuICAgIH1cbn1cbmluaXRpYWxpc2UoKTtcbmhlbGxvRGV2KCk7IiwiLy8gRk9OQ1RJT05TIFVUSUxFUyBBVSBTVE9DS0FHRSBMT0NBTCAoU0VTU0lPTiwgQ09PS0lFUywgSU5ERVhEQiwgRVRDLilcbi8vIFJldmVuaXIgcG91ciBnw6lyZXIgbGUgY2FzIG/DuSBsb2NhbC5zdG9yYWdlIG4nZXN0IHBhcyBjb25udSBwb3VyIHV0aWxpc2VyIGNvb2tpZVxuICAgIFxuZXhwb3J0IGNvbnN0IHNhdmVMb2NhbHkgPSAobmFtZSwgZGF0YSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbHkgPSAobmFtZSwganNvbj1mYWxzZSkgPT5cbntcbiAgICBpZihqc29uKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMb2NhbHkgPSAobmFtZSkgPT5cbntcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbn0iLCJpbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuLy8gRm9uY3Rpb24gYXNzb2NpYW50IGxlcyBhdHRyaWJ1dHMgZm91cm5pcyDDoCB1biBjaGFtcCBkZSBmb3JtdWxhaXJlXG5leHBvcnQgY29uc3QgYWRkRWxlbWVudCA9IChlbHRQYXJlbnQsIGVsdFR5cGUsIGVsdENvbnRlbnQ9XCJcIiwgZWx0SWQ9XCJcIiwgZWx0Q2xhc3M9W10sIGVsdEF0dHJpYnV0ZXM9e30sIHJlcGxhY2U9dHJ1ZSkgPT5cbntcbiAgICBpZihpc0VtcHR5KGVsdFR5cGUpIHx8IGlzRW1wdHkoZWx0UGFyZW50KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGVsc2VcbiAgICB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbHRUeXBlKTtcbiAgICAgICAgXG4gICAgICAgIGlmKCFpc0VtcHR5KGVsdElkKSkvLyB0ZXN0ZXIgc2kgbCdpZCBuJ2VzdCBwYXMgZMOpasOgIHV0aWxpc8OpIGRhbnMgbGUgRE9NID9cbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaWQ9ZWx0SWQ7XG5cbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbHRDbGFzcykgJiYgZWx0Q2xhc3MubGVuZ3RoIT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBmb3IobGV0IGkgaW4gZWx0Q2xhc3MpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKGVsdENsYXNzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHR5cGVvZiBlbHRBdHRyaWJ1dGVzID09PSBcIm9iamVjdFwiKSAvLyAhISB0b3VzIGxlcyBvYmpldHMgbmUgc29udCBwYXMgb2tcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBhdHRyaWJ1dE5hbWUgaW4gZWx0QXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dE5hbWUsIGVsdEF0dHJpYnV0ZXNbYXR0cmlidXROYW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighaXNFbXB0eShlbHRDb250ZW50KSlcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuaW5uZXJIVE1MPWVsdENvbnRlbnQucmVwbGFjZSgvXFxuL2csXCI8YnI+XCIpOy8vIGlubmVySFRNTCBwZXJtZXQgZCdham91dGVyIGR1IHRleHRlIGF5YW50IGx1aS1tw6ptZSBkZXMgYmFsaXNlcywgZXRjLlxuICAgICAgICAgICAgXG4gICAgICAgIGlmKHJlcGxhY2UpXG4gICAgICAgICAgICBlbHRQYXJlbnQuaW5uZXJIVE1MPVwiXCI7XG4gICAgICAgIGVsdFBhcmVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTtcbiAgICB9ICAgIFxufSIsIi8vIENlIHNjcmlwdCBmb3Vybml0IGRlcyBmb25jdGlvbnMgdXRpbGlzw6llcyBzdXIgdG91dGVzIGxlcyBwYWdlcyBkdSBzaXRlXG5cbmV4cG9ydCBjb25zdCBoZWxsb0RldiA9ICgpID0+XG57XG4gICAgY29uc29sZS5sb2coXCIqKioqIEhlbGxvIGFtaSBkw6l2ZWxvcHBldXIgOi0pXFxuXFxuTGUgY29kZSBkZSBXaWtpTGVybmkgZXN0IGxpYnJlIGV0IHZvdXMgcG91dmV6IGxlIHRyb3V2ZXIgw6AgY2V0dGUgYWRyZXNzZSA6XFxuaHR0cHM6Ly9mb3JnZS5jaGFwcmlsLm9yZy9GYWJfQmxhYi9XaWtpTGVybmlcXG5cXG5Qb3VyIGxlcyBzdWdnZXN0aW9ucyBkJ2Ftw6lsaW9yYXRpb24gb3UgcXVlc3Rpb25zIDogZGV2QHdpbGlsZXJuaS5jb20gKioqKlwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFjY291bnRMaW5rID0gKHN0YXR1cywgY29uZmlnVGVtcGxhdGUpID0+XG57XG4gICAgY29uc3QgbGluaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY291bnRIZWFkTGlua1wiKTtcbiAgICBjb25zdCBob21lUGFnZT1zdGF0dXMrXCJIb21lUGFnZVwiO1xuICAgIGxpbmsuaHJlZj1cIi9cIitjb25maWdUZW1wbGF0ZVtob21lUGFnZV07XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IHNldEF0dHJpYnV0ZXNUb0lucHV0cyA9IChpbnB1dHNDb25mLCBteUZvcm0pID0+XG57XG4gICAgZm9yKGxldCBpIGluIG15Rm9ybS5lbGVtZW50cylcbiAgICB7XG4gICAgICAgIGlmKCFpc0VtcHR5KG15Rm9ybS5lbGVtZW50c1tpXS5pZCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBpZElucHV0PW15Rm9ybS5lbGVtZW50c1tpXS5pZDtcbiAgICAgICAgICAgIGlmKGlucHV0c0NvbmZbaWRJbnB1dF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0SFRNTD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZElucHV0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGUgaW4gaW5wdXRzQ29uZltpZElucHV0XSlcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRIVE1MLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGlucHV0c0NvbmZbaWRJbnB1dF1bYXR0cmlidXRlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFLDqWN1cMOocmUgdG91dGVzIGxlcyB2YWxldXJzIGRlIGNoYW1wcyBlbiBvbWV0dGFudCBsZXMgY2hlY2tib3ggbm9uIGNvY2jDqWVzLCBldGMuXG5leHBvcnQgY29uc3QgZ2V0RGF0YXNGcm9tSW5wdXRzID0gKG15Rm9ybSkgPT5cbntcbiAgICBjb25zdCBkYXRhcz17fTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShteUZvcm0pO1xuICAgIGZvcihsZXQgZW50cmllIG9mIGZvcm1EYXRhLmVudHJpZXMoKSlcbiAgICAgICBkYXRhc1tlbnRyaWVbMF1dPWVudHJpZVsxXTtcbiAgICByZXR1cm4gZGF0YXM7XG59XG5cbi8vIFZpZGUgdG91cyBsZXMgY2hhbXBzIGQndW4gZm9ybXVsYWlyZSwgeSBjb21wcmlzIGhpZGRlbiwgY2hlY2tib3gsIGV0Yy5cbi8vIFJldm9pciBwb3VyIGxlcyBzZWxlY3RcbmV4cG9ydCBjb25zdCBlbXB5Rm9ybSA9IChteUZvcm0pID0+XG57XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEobXlGb3JtKTtcbiAgICBmb3IobGV0IGVudHJpZSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAge1xuICAgICAgICBpZihteUZvcm0uZWxlbWVudHNbZW50cmllWzBdXS50eXBlPT1cImNoZWNrYm94XCIgfHwgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udHlwZT09XCJyYWRpb1wiKVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0uY2hlY2tlZD1mYWxzZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbXlGb3JtLmVsZW1lbnRzW2VudHJpZVswXV0udmFsdWU9XCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyBWaWRlIGV0IGNhY2hlIGxlIGZvcm11bGFpcmVcbmV4cG9ydCBjb25zdCBlbXB5QW5kSGlkZUZvcm0gPSAobXlGb3JtKSA9Plxue1xuICAgIGVtcHlGb3JtKG15Rm9ybSk7XG4gICAgbXlGb3JtLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7XG59IiwiaW1wb3J0IHsgbWF0b21vIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9tYXRvbW8uanNcIjtcblxuLy8gRm9uY3Rpb24gY2hhcmdlYW50IGxlIGNvZGUgbWF0b21vXG5leHBvcnQgY29uc3QgbG9hZE1hdG9tbyA9ICgpID0+XG57XG4gICAgLy8gY2hhcmdlbWVudCBkZSBtYXRvbW9cbiAgICB2YXIgX3BhcSA9IHdpbmRvdy5fcGFxID0gd2luZG93Ll9wYXEgfHwgW107XG4gICAgLy9ham91dCBjbmlsICA6XG4gICAgX3BhcS5wdXNoKFtmdW5jdGlvbigpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGdldE9yaWdpbmFsVmlzaXRvckNvb2tpZVRpbWVvdXQoKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5vd1RzID0gTWF0aC5yb3VuZChub3cuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICAgICAgICB2aXNpdG9ySW5mbyA9IHNlbGYuZ2V0VmlzaXRvckluZm8oKTtcbiAgICAgICAgICAgIHZhciBjcmVhdGVUcyA9IHBhcnNlSW50KHZpc2l0b3JJbmZvWzJdKTtcbiAgICAgICAgICAgIHZhciBjb29raWVUaW1lb3V0ID0gMzM2OTYwMDA7IC8vIDEzIG1vaXMgZW4gc2Vjb25kZXNcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFRpbWVvdXQgPSBjcmVhdGVUcyArIGNvb2tpZVRpbWVvdXQgLSBub3dUcztcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWaXNpdG9yQ29va2llVGltZW91dCggZ2V0T3JpZ2luYWxWaXNpdG9yQ29va2llVGltZW91dCgpICk7XG4gICAgfV0pO1xuICAgIC8vLS1maW4gYWpvdXQgY25pbFxuICAgIF9wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgX3BhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHU9bWF0b21vLnVybDtcbiAgICAgICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7XG4gICAgICAgIF9wYXEucHVzaChbJ3NldFNpdGVJZCcsIG1hdG9tby5zaXRlSWRdKTtcbiAgICAgICAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcbiAgICAgICAgZy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnLmFzeW5jPXRydWU7IGcuc3JjPXUrJ21hdG9tby5qcyc7IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTtcbiAgICB9KSgpO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/front/public/JS/unsubscribe.app.js b/front/public/JS/unsubscribe.app.js index 6d6b47c..8af961a 100644 --- a/front/public/JS/unsubscribe.app.js +++ b/front/public/JS/unsubscribe.app.js @@ -93,15 +93,11 @@ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var _module$exports; +const users = __webpack_require__(/*! ./users */ "../config/users.js"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +const questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); -var users = __webpack_require__(/*! ./users */ "../config/users.js"); - -var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js"); - -module.exports = (_module$exports = { +module.exports = { apiUrl: "http://localhost:3000/api", siteUrl: "http://localhost:8080", adminName: "Fabrice", @@ -169,8 +165,21 @@ module.exports = (_module$exports = { illustrationsMiniaturesWidthMaxInPx: 200, // Links: nbLinksMin: 1, - nbLinksMax: 0 -}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaires", questionnaires.dirHTMLQuestionnaires), _defineProperty(_module$exports, "dirWebQuestionnaires", questionnaires.dirWebQuestionnaires), _module$exports); + nbLinksMax: 0, + // Questions & responses: + nbQuestionsMin: 1, + nbQuestionsMax: 0, + nbChoicesMax: 10, + // à supprimer quand tous les "require" à jour: + passwordMinLength: users.password.minlength, + dirCacheUsers: users.dirCacheUsers, + dirCacheUsersAnswers: users.dirCacheUsersAnswers, + dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires, + dirCacheQuestions: questionnaires.dirCacheQuestions, + dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires, + dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires, + dirWebQuestionnaires: questionnaires.dirWebQuestionnaires +}; /***/ }), @@ -525,99 +534,78 @@ module.exports = { /*! no static exports found */ /***/ (function(module, exports) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - // Quelques fonctions utiles pour les chaînes -var Tool = /*#__PURE__*/function () { - function Tool() { - _classCallCheck(this, Tool); +class Tool { + static isEmpty(myVar) { + if (myVar === undefined || myVar === null) return true;else { + myVar += ""; // si autre chose qu'une chaîne envoyé... + + myVar = myVar.trim(); + if (myVar === "") return true;else return false; + } } - _createClass(Tool, null, [{ - key: "isEmpty", - value: function isEmpty(myVar) { - if (myVar === undefined || myVar === null) return true;else { - myVar += ""; // si autre chose qu'une chaîne envoyé... + static trimIfNotNull(myString) { + if (Tool.isEmpty(myString)) myString = null;else { + myString += ""; // si autre chose qu'une chaîne envoyé... - myVar = myVar.trim(); - if (myVar === "") return true;else return false; - } + myString = myString.trim(); } - }, { - key: "trimIfNotNull", - value: function trimIfNotNull(myString) { - if (Tool.isEmpty(myString)) myString = null;else { - myString += ""; // si autre chose qu'une chaîne envoyé... + return myString; + } - myString = myString.trim(); - } - return myString; + static shortenIfLongerThan(myString, max) { + myString += ""; // au cas où cela ne serait pas une chaîne... + + if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; + return myString; + } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + + + static replaceAll(myString, mapObj) { + const replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); + return myString.replace(replaceElts, matched => { + return mapObj[matched]; + }); + } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random + + + static getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; + } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country + + + static dateFormat(dateString, lang = "fr") { + if (Tool.isEmpty(dateString)) return ""; + let myDate = new Date(dateString); + let myDay = myDate.getDate() + ""; + if (myDay.length === 1) myDay = "0" + myDay; + let myMounth = myDate.getMonth() + 1 + ""; + if (myMounth.length === 1) myMounth = "0" + myMounth; + let myYear = myDate.getFullYear(); + if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 + return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; + } // On enlève volontairement les 0/O pour éviter les confusions ! + // Et mieux vaut aussi débuter et finir par une lettre simple. + + + static getPassword(nbCarMin, nbCarMax) { + const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); + const letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; + const others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; + let password = letters[Math.floor(Math.random() * letters.length)]; + + for (let i = 1; i < nbCar - 1; i++) { + if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; } - }, { - key: "shortenIfLongerThan", - value: function shortenIfLongerThan(myString, max) { - myString += ""; // au cas où cela ne serait pas une chaîne... - if (myString.length > max) myString = myString.substring(0, max - 3) + "…"; - return myString; - } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings + password += letters[Math.floor(Math.random() * letters.length)]; + return password; + } - }, { - key: "replaceAll", - value: function replaceAll(myString, mapObj) { - var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi"); - return myString.replace(replaceElts, function (matched) { - return mapObj[matched]; - }); - } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random - - }, { - key: "getRandomInt", - value: function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; - } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country - - }, { - key: "dateFormat", - value: function dateFormat(dateString) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr"; - if (Tool.isEmpty(dateString)) return ""; - var myDate = new Date(dateString); - var myDay = myDate.getDate() + ""; - if (myDay.length === 1) myDay = "0" + myDay; - var myMounth = myDate.getMonth() + 1 + ""; - if (myMounth.length === 1) myMounth = "0" + myMounth; - var myYear = myDate.getFullYear(); - if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09 - return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear; - } // On enlève volontairement les 0/O pour éviter les confusions ! - // Et mieux vaut aussi débuter et finir par une lettre simple. - - }, { - key: "getPassword", - value: function getPassword(nbCarMin, nbCarMax) { - var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin)); - var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz"; - var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ"; - var password = letters[Math.floor(Math.random() * letters.length)]; - - for (var i = 1; i < nbCar - 1; i++) { - if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)]; - } - - password += letters[Math.floor(Math.random() * letters.length)]; - return password; - } - }]); - - return Tool; -}(); +} module.exports = Tool; @@ -1206,4 +1194,4 @@ initialise(); /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9zdWJzY3JpcHRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvY2xpZW50c3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZG9tLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9ldmVyeXdoZXJlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91cmwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy91bnN1YnNjcmliZS5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlcyIsImRpcldlYlF1ZXN0aW9ubmFpcmVzIiwicXVlc3Rpb25uYWlyZVJvdXRlcyIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJwcmV2aWV3UXVlc3Rpb25uYWlyZVJvdXRlcyIsInB1Ymxpc2hlZFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJyZWdlbmVyYXRlSFRNTCIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzUm91dGUiLCJncm91cFJvdXRlcyIsImdldEdyb3VwUm91dGUiLCJwcmV2aWV3R3JvdXBSb3V0ZXMiLCJzZWFyY2hHcm91cHNSb3V0ZSIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0QWRtaW5TdGF0cyIsImdldFByZXZpb3VzQW5zd2VycyIsImdldFN0YXRzQW5zd2VycyIsInNhdmVBbnN3ZXJzUm91dGUiLCJRdWVzdGlvbm5haXJlIiwidGl0bGUiLCJtYXhsZW5ndGgiLCJyZXF1aXJlZCIsInNsdWciLCJpbnRyb2R1Y3Rpb24iLCJzZWFyY2hRdWVzdGlvbm5haXJlcyIsIkdyb3VwIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsInNlYXJjaEdyb3VwcyIsImRpckNhY2hlR3JvdXBzIiwiZGlyQ2FjaGVUYWdzIiwiZGlySFRNTEdyb3VwcyIsImRpckhUTUxOZXdzIiwiZGlySFRNTFRhZ3MiLCJkaXJXZWJHcm91cHMiLCJkaXJXZWJOZXdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwiZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoVXNlclJvdXRlIiwic2lnbnVwQ29tcGxldGlvblJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnNXaXRob3V0QW5zd2VycyIsImFkZEJ0blR4dCIsImFkZE9rTWVzc2FnZSIsImFsZXJ0TmV3V2luZG93IiwiYmFkVXJsIiwiYnRuTGlua1RvUXVlc3Rpb25uYWlyZSIsImJ0blByb3Bvc2VDb25uZWN0aW9uIiwiYnRuUHJvcG9zZVN1YnNjcmliZSIsImJ0blNob3dPbldlYlNpdGUiLCJkZWxldGVCdG5UeHQiLCJkZWxldGVGYWlsTWVzc2FnZSIsImRlbGV0ZU9rTWVzc2FnZSIsImZhaWxBdXRoIiwiZmFpbEF1dGhDcm9uIiwiZmFpbEF1dGhIZWFkZXIiLCJmYWlsQXV0aElkIiwiZmFpbEF1dGhUb2tlbiIsIm5lZWRlZFBhcmFtcyIsIm5leHRQYWdlIiwibm90QWxsb3dlZCIsIm5vdFJlcXVpcmVkIiwibm90VmFsaWRGb3JtYXQiLCJwcmV2aW91c1BhZ2UiLCJzZXJ2ZXJFcnJvciIsInNlcnZlckVycm9yQWRtaW4iLCJzaXRlSFRNTFRpdGxlIiwic2l0ZU1ldGFEZXNjcmlwdGlvbiIsInNjcmlwdFRpbWluZ0FsZXJ0Iiwic2NyaXB0VGltaW5nSW5mbyIsInN0YXRzQWRtaW4iLCJzdWJzY3JpcHRpb25DYWxsIiwidXBkYXRlQnRuVHh0IiwidXBkYXRlT2tNZXNzYWdlIiwiYWxsU3Vic2NyaXB0aW9uUHJvY2Vzc2VkIiwiaW5mb3NFeHBpcmF0ZWQiLCJpbmZvc0V4cGlyYXRlZEFkbWluIiwiaW5mb3NOYkRheXMiLCJpbmZvc05iRGF5c0FkbWluIiwiaW5mb3NQYXltZW50c0FkbWluIiwiaXNOb3RWYWxpZGVkIiwibWFpbEVuZEZyZWVUaW1lQm9keUhUTUwiLCJtYWlsRW5kRnJlZVRpbWVCb2R5VHh0IiwibWFpbEVuZEZyZWVUaW1lTGlua1R4dCIsIm1haWxFbmRGcmVlVGltZU1lc3NhZ2UiLCJtYWlsRW5kRnJlZVRpbWVTdWJqZWN0IiwibWFpbEV4cGlyYXRpb25Cb2R5SFRNTCIsIm1haWxFeHBpcmF0aW9uQm9keVR4dCIsIm1haWxFeHBpcmF0aW9uTGlua1R4dCIsIm1haWxFeHBpcmF0aW9uTWVzc2FnZSIsIm1haWxFeHBpcmF0aW9uUmVsYXVuY2hUeHQiLCJtYWlsRXhwaXJhdGlvblN1YmplY3QiLCJtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IiwibWFpbE5ld1F1ZXN0aW9ubmFpcmVCb2R5VHh0IiwibWFpbFN0b3BNYWlsTGlua1R4dCIsIm5lZWRLbm93SWZOb3RpY2VPayIsIm5lZWRJbnRlZ2VyTnVtYmVyT2ZEYXlzIiwibmVlZE1pbk51bWJlck9mRGF5cyIsIm5lZWROb3RUb29Mb25nRGF5c0xpc3QiLCJuZWVkTnVtYmVyT2ZEYXlzIiwibmVlZFVuaXF1ZURheXNMaXN0IiwibmVlZFZhbGlkRGF5c0xpc3QiLCJub05ld1F1ZXN0aW9ubmFpcmVGb3JVc2VyIiwidW5zdWJzY3JpcHRpb25PayIsInVuc3Vic2NyaXB0aW9uRmFpbCIsIlRvb2wiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJteVN0cmluZyIsImlzRW1wdHkiLCJtYXgiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJtYXBPYmoiLCJyZXBsYWNlRWx0cyIsIlJlZ0V4cCIsIk9iamVjdCIsImtleXMiLCJqb2luIiwicmVwbGFjZSIsIm1hdGNoZWQiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwicmFuZG9tIiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwibmJDYXJNaW4iLCJuYkNhck1heCIsIm5iQ2FyIiwibGV0dGVycyIsIm90aGVycyIsImkiLCJoZWFkTGlua3MiLCJhbmNob3IiLCJhdHRyaWJ1dGVzIiwiaHJlZiIsImlkIiwiZm9vdExpbmtzIiwicmVsIiwibWF4UXVlc3Rpb25uYWlyZXNCeVBhZ2UiLCJ1c2VySG9tZVBhZ2UiLCJhZG1pbkhvbWVQYWdlIiwibWFuYWdlckhvbWVQYWdlIiwic3Vic2NyaWJlUGFnZSIsImNvbm5lY3Rpb25QYWdlIiwiYWNjb3VudFBhZ2UiLCJxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlIiwidXNlcnNNYW5hZ2VtZW50UGFnZSIsIm5iUXVlc3Rpb25uYWlyZXNVc2VySG9tZVBhZ2UiLCJpbGx1c3RyYXRpb25EaXIiLCJzaXRlU2xvZ2FuIiwiaG9tZVRpdGxlMSIsImhvbWVQMSIsImhvbWVUaXRsZTIiLCJob21lUDIiLCJuZXdRdWVzdGlvbm5haXJlc1RpdGxlIiwibmV3UXVlc3Rpb25uYWlyZXNJbnRybyIsImV4cGxhbmF0aW9uVGl0bGUiLCJleHBsYW5hdGlvblR4dCIsIm5vSlNOb3RpZmljYXRpb24iLCJ0YWdzTGlzdFR4dCIsImFib3V0UGFnZSIsImNndVBhZ2UiLCJkZWxldGVMaW5rUGFnZSIsImxvZ2luTGlua1BhZ2UiLCJuZXdMb2dpbkxpbmtQYWdlIiwic3RvcE1haWxQYWdlIiwidXBkYXRlQWNjb3VudFBhZ2UiLCJ1c2VySG9tZVBhZ2VUeHQiLCJ2YWxpZGF0aW9uTGlua1BhZ2UiLCJtYWlsUmVjaXBpZW50VHh0IiwibGljZW5jZVR4dCIsImhvbWVQYWdlVHh0IiwiaG9tZUJ0bkFib3V0VHh0IiwiaG9tZUJ0blN1YnNjcmliZVR4dCIsImhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZSIsIm5ld3NMaXN0VGl0bGUiLCJ0YWdMaXN0VGl0bGUiLCJ0YWdMaXN0TWV0YURlc2MiLCJ0YWdMaXN0SW50cm8iLCJhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQiLCJxdWl6RWxlbWVudExpbmtzSW50cm8iLCJxdWl6RWxlbWVudFN1YmNyaXB0aW9uRm9ybVRpdGxlIiwiZXhwbGFuYXRpb25FbGVtZW50VHh0IiwidHdpdHRlckFjY291bnQiLCJtYXhRdWVzdGlvbm5haXJlc1NpdGVIb21lUGFnZSIsInNhdmVMb2NhbHkiLCJkYXRhIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRMb2NhbHkiLCJqc29uIiwicGFyc2UiLCJnZXRJdGVtIiwicmVtb3ZlTG9jYWx5IiwicmVtb3ZlSXRlbSIsImFkZEVsZW1lbnQiLCJlbHRQYXJlbnQiLCJlbHRUeXBlIiwiZWx0Q29udGVudCIsImVsdElkIiwiZWx0Q2xhc3MiLCJlbHRBdHRyaWJ1dGVzIiwibmV3RWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImNsYXNzTGlzdCIsImFkZCIsImF0dHJpYnV0TmFtZSIsInNldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwiaGVsbG9EZXYiLCJjb25zb2xlIiwibG9nIiwidXBkYXRlQWNjb3VudExpbmsiLCJzdGF0dXMiLCJjb25maWdUZW1wbGF0ZSIsImxpbmsiLCJnZXRFbGVtZW50QnlJZCIsImhvbWVQYWdlIiwiZ2V0VXJsUGFyYW1zIiwibG9jYXRpb24iLCJwYXJhbWV0ZXJzIiwic3BsaXQiLCJwYXJhbSIsImRhdGFzIiwiZGVjb2RlVVJJIiwiZ2V0VGltZURpZmZlcmVuY2UiLCJ0aW1lTG9jYWwiLCJnZXRUaW1lem9uZU9mZnNldCIsInNldFNlc3Npb24iLCJ1c2VySWQiLCJ0b2tlbiIsImR1cmF0aW9uVFMiLCJzdG9yYWdlVXNlciIsImR1cmF0aW9uIiwiY2hlY2tBbnN3ZXJEYXRhcyIsImxhc3RBbnN3ZXIiLCJhbnN3ZXIiLCJuYkNvcnJlY3RBbnN3ZXJzIiwibmJRdWVzdGlvbnMiLCJRdWVzdGlvbm5haXJlSWQiLCJHcm91cElkIiwiY2hlY2tTZXNzaW9uIiwidXJsUmVkaXJlY3Rpb24iLCJtZXNzYWdlIiwidXJsV2FudGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1c2VyRGF0YXMiLCJyZWRpcmVjdFVzZXIiLCJ1c2VyIiwibm93IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25sb2FkIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJpc1ZhbGlkIiwibGFuZ3VhZ2UiLCJ0aW1lRGlmZmVyZW5jZSIsIm5iRGF5c09rIiwidXJsQWNjb3VudCIsIndpbmRvdyIsImluZGV4T2YiLCJhc3NpZ24iLCJvbmVycm9yIiwic3RhdHVzVGV4dCIsInNlbmQiLCJkaXZSZXNwb25zZSIsImluaXRpYWxpc2UiLCJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJlIl0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7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QXpCLEVBQWlDbUMsV0FBakMsQ0FBbkIsRUFBa0UsRUFBbEUsRUFBc0UsQ0FBQyxTQUFELENBQXRFLENBQVYsQ0FESixLQUdJcUQsZ0VBQVUsQ0FBQzhFLFdBQUQsRUFBYyxHQUFkLEVBQW1CdEwsa0JBQWtCLENBQUNnQixPQUFuQixDQUEyQixNQUEzQixFQUFtQ21DLFdBQW5DLENBQW5CLEVBQW9FLEVBQXBFLEVBQXdFLENBQUMsT0FBRCxDQUF4RSxDQUFWO0FBQ1A7QUFDSixPQVZEOztBQVdBa0gsU0FBRyxDQUFDZ0IsSUFBSjtBQUNIO0FBQ0osR0FwQkQsQ0FxQkEsT0FBTU8sQ0FBTixFQUNBO0FBQ0lwRixvRUFBVSxDQUFDOEUsV0FBRCxFQUFjLEdBQWQsRUFBbUI5TixXQUFuQixFQUFnQyxFQUFoQyxFQUFvQyxDQUFDLE9BQUQsQ0FBcEMsQ0FBVjtBQUNIO0FBQ0osQ0EzQkQ7O0FBNEJBK04sVUFBVSxHIiwiZmlsZSI6Ii4vSlMvdW5zdWJzY3JpYmUuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvdW5zdWJzY3JpYmUuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3N1YnNjcmlwdGlvblwiOiBcIi4uL2xhbmcvZnIvc3Vic2NyaXB0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvc3Vic2NyaXB0aW9uJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQgOiBcIlRvdXMgbGVzIGFib25uw6lzIG9udCDDqXTDqSB0cmFpdMOpcyBwb3VyIGxlIG1vbWVudC5cIixcbiAgICBpbmZvc0V4cGlyYXRlZDogXCJWb3RyZSBhYm9ubmVtZW50IGEgZXhwaXLDqSwgbWFpcyBpbCB2b3VzIHJlc3RlIGVuY29yZSBxdWVscXVlcyBqb3VycyBhdmFudCBxdWUgdm90cmUgY29tcHRlIGV0IHZvcyBkb25uw6llcyBuZSBzb2llbnQgY29tcGzDqHRlbWVudCBzdXBwcmltw6llcy48YnI+UG91ciBjZSBmYWlyZSwgc3VpdmV6IHNhbnMgdGFyZGVyIGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc0V4cGlyYXRlZEFkbWluOiBcIkNldCBhYm9ubmVtZW50IGEgZXhwaXLDqS5cIixcbiAgICBpbmZvc05iRGF5czogXCJWb3RyZSBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+Ljxicj5Wb3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCBwcm9sb25nZXIgdm90cmUgYWJvbm5lbWVudCBlbiBzdWl2YW50IGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc05iRGF5c0FkbWluOiBcIkNldCBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+LlwiLFxuICAgIGluZm9zUGF5bWVudHNBZG1pbiA6IFwiREFURV9QQVlNRU5UIDogcGFpZW1lbnQgZGUgQU1PVU5UIOKCrCBhdSBub20gZGUgQ0xJRU5UX05BTUUuXCIsXG4gICAgaXNOb3RWYWxpZGVkIDogXCJDZXQgdXRpbGlzYXRldXIgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLjxicj5Wb3VzIHBvdXZleiBsZSBmYWlyZSDDoCBzYSBwbGFjZSA8YSBocmVmPScjdmFsaWRhdGlvbk9rJz5lbiBjb2NoYW50IGxhIGNhc2UgaW5kaXF1w6llPC9hPiBldCBlbnJlZ2lzdHJhbnQuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keUhUTUw6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgc2FucyB0YXJkZXIgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy48L3A+XCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IGdyYXR1aXQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuXFxuXFxuUG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc2FucyBhdHRlbmRyZSBzb3VzY3JpcmUgw6AgdW4gYWJvbm5lbWVudCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IDogXCJNJ2Fib25uZXIuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTWVzc2FnZTogXCIgcmVsYW5jZXMgZW52b3nDqWVzLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZVN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IHZhIGV4cGlyZXJcIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuPGJyPjxicj5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFeHBpcmF0aW9uQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIFNJVEVfTkFNRSwgdm91cyBwb3V2ZXogbGUgcHJvbG9uZ2VyIGTDqHMgYXVqb3VyZCdodWkgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEV4cGlyYXRpb25MaW5rVHh0IDogXCJQcm9sb25nZXIgbW9uIGFib25uZW1lbnQuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25NZXNzYWdlOiBcIkZJUlNUIHByZW1pw6hyZXMgZXQgU0VDT05EIGRldXhpw6htZXMgcmVsYW5jZXMgZW52b3nDqWVzIHBvdXIgZGVzIGFib25uZW1lbnRzIGV4cGlyYW50IGQnaWNpIHBldS5cIixcbiAgICBtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0OiBcIltSYXBwZWxdIFwiLFxuICAgIG1haWxFeHBpcmF0aW9uU3ViamVjdDogXCJWb3RyZSBhYm9ubmVtZW50IHZhIGJpZW50w7R0IGV4cGlyZXJcIixcbiAgICBtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb2ljaSBsZSBsaWVuIHZlcnMgbGUgbm91dmVsIGFydGljbGUgw6AgbGlyZSA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlYXUgcXVpeiA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxTdG9wTWFpbExpbmtUeHQgOiBcIlN0b3BwZXIgbGVzIGVudm9pcy5cIixcbiAgICBuZWVkS25vd0lmTm90aWNlT2sgOiBcIklsIG1hbnF1ZSBsJ2luZm9ybWF0aW9uIHN1ciBsJ2FjY2VwdGF0aW9uIG91IG5vbiBkZSByZWNldm9pciBkZXMgbm90aWZpY2F0aW9ucy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIuXCIsXG4gICAgbmVlZE1pbk51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmICFcIixcbiAgICBuZWVkTm90VG9vTG9uZ0RheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQgKHRyb3AgbG9uZ3VlKS5cIixcbiAgICBuZWVkTnVtYmVyT2ZEYXlzIDogXCJJbCBmYXV0IHVuIG5vbWJyZSBkZSBqb3VycyBwb3VyIGwnYWJvbm5lbWVudC5cIixcbiAgICBuZWVkVW5pcXVlRGF5c0xpc3QgOiBcIkxhIGxpc3RlIGRlIGpvdXJzIHPDqWxlY3Rpb25uw6lzIG4nYSBwYXMgbGUgYm9uIGZvcm1hdC4gRG91YmxvbiA6IFwiLFxuICAgIG5lZWRWYWxpZERheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIENhcmFjdMOocmUgbm9uIHZhbGlkZSA6IFwiLFxuICAgIG5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIgOiBcIkF1Y3VuIG5vdXZlYXUgcXVlc3Rpb25uYWlyZSB0cm91dsOpIHBvdXIgdW4gYWJvbm7DqSA6IFwiLFxuICAgIHVuc3Vic2NyaXB0aW9uT2sgOiBcIlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIHByaXNlIGVuIGNvbXB0ZS4gVm91cyBuZSByZWNldnJleiBwbHVzIGRlIG1lc3NhZ2VzIHZlbmFudCBkdSBzaXRlLCBzYXVmIHBvdXIgdm91cyBzaWduYWxlciBsYSBmaW4gZGUgdm90cmUgYWJvbm5lbWVudC48YnI+Tidow6lzaXRleiBwYXMgPGEgaHJlZj0nLyNVUkwnPsOgIGFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkZSBub3V2ZWF1IGF1dG9yaXNlciBjZXJ0YWlucyBlbnZvaXMuXCIsXG4gICAgdW5zdWJzY3JpcHRpb25GYWlsIDogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBsaWVuIGRlIGTDqXNhYm9ubmVtZW50IG5lIGZvbmN0aW9ubmUgcGFzLjxicj5Wb3VzIHBvdXZleiA8YSBocmVmPScvI1VSTCc+YWNjw6lkZXIgw6Agdm90cmUgY29tcHRlPC9hPiBwb3VyIGTDqXNhY3RpdmVyIGxlcyBlbnZvaXMgbWFudWVsbGVtZW50LlwiXG59O1xuIiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSIsIi8vIC0tIEdFU1RJT04gREUgTEEgUEFHRSBQRVJNRVRUQU5UIERFIFNFIETDiUJPTk5FUiBERSBUT1VTIExFUyBFTlZPSVNcblxuLy8vIFVuIHRva2VuIGVzdCB0cmFuc21pcyBlbiBwYXJhbcOodHJlIGRlIGwnVXJsLiBJbCBhIHVuZSB2YWxpZGl0w6kgbGltaXTDqSBkYW5zIGxlIHRlbXBzLiBTaSBsZSB0b2tlbiBlc3Qgb2ssIGlsIG4nZXN0IHBhcyBuw6ljZXNzYWlyZSBkJ8OqdHJlIGNvbm5lY3TDqS5cbi8vLyBEYW5zIGxlIGNhcyBvw7kgaWwgbidlc3QgcGx1cyB2YWxpZGUsIG9uIHBldXQgcHJvcG9zZXIgw6AgbCd1dGlsaXNhdGV1ciBkZSBzZSBjb25uZWN0ZXIgw6Agc29uIGNvbXB0ZSBwb3VyIHNlIGTDqXNhYm9ubmVyLlxuLy8vIFNpIGxlIHRva2VuIGVzdCBvaywgb24gdmFsaWRlIGVucmVnaXN0cmVtZW50IGxlIGTDqXNhYm9ubmVtZW50IGV0IGFmZmljaGUgdW4gbWVzc2FnZSBkZSBjb25maXJtYXRpb25cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgIHsgYWNjb3VudFBhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcbmNvbnN0IHsgdXNlclJvdXRlcywgdW5zdWJzY3JpYmVSb3V0ZSB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IHVuc3Vic2NyaXB0aW9uRmFpbCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9zdWJzY3JpcHRpb25cIik7XG5cbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcblxuaGVsbG9EZXYoKTtcblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAgeyBcbiAgICAgICAgY29uc3QgZGF0YXM9Z2V0VXJsUGFyYW1zKCk7XG4gICAgICAgIGlmKGRhdGFzICYmIGRhdGFzLnQhPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrdW5zdWJzY3JpYmVSb3V0ZStkYXRhcy50KTtcbiAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5tZXNzYWdlICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGFjY291bnRQYWdlKSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCB1bnN1YnNjcmlwdGlvbkZhaWwucmVwbGFjZShcIiNVUkxcIiwgYWNjb3VudFBhZ2UpLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcgc3luYyBeXFwuXFwvLipcXC9nZW5lcmFsJCIsIndlYnBhY2s6Ly8vLi4vbGFuZyBzeW5jIF5cXC5cXC8uKlxcL3N1YnNjcmlwdGlvbiQiLCJ3ZWJwYWNrOi8vLy4uL2xhbmcvZnIvZ2VuZXJhbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGFuZy9mci9zdWJzY3JpcHRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvY2xpZW50c3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvZG9tLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy9ldmVyeXdoZXJlLmpzIiwid2VicGFjazovLy8uL3NyYy90b29scy91cmwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3VzZXJzLmpzIiwid2VicGFjazovLy8uL3NyYy91bnN1YnNjcmliZS5qcyJdLCJuYW1lcyI6WyJ1c2VycyIsInJlcXVpcmUiLCJxdWVzdGlvbm5haXJlcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcGlVcmwiLCJzaXRlVXJsIiwiYWRtaW5OYW1lIiwiYWRtaW5FbWFpbCIsInNlbmRlck5hbWUiLCJzZW5kZXJFbWFpbCIsImFkbWluTGFuZyIsInRoZW1lIiwiYXZhaWxhYmxlTGFuZ3MiLCJzaXRlTmFtZSIsImJlZ2luQ29kZUdvZGZhdGhlciIsImRlZmF1bHRSZWNlaXB0RGF5cyIsImNyb25UaW1pbmdBbGVydEluU2Vjb25kZSIsInJlc3BvbnNlVGltaW5nQWxlcnRJblNlY29uZGUiLCJ0b2tlblNpZ251cFZhbGlkYXRpb25UaW1lSW5Ib3VycyIsInRva2VuTG9naW5MaW5rVGltZUluSG91cnMiLCJ0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NYXhUaW1lSW5EYXlzIiwidG9rZW5Mb2dpbkNoYW5naW5nVGltZUluSG91cnMiLCJ0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VycyIsInRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5cyIsImZyZWVBY2NvdW50VGltaW5nSW5EYXlzIiwiZnJlZUFjY291bnRFeHBpcmF0aW9uTm90aWZpY2F0aW9uSW5EYXlzIiwiYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uU2Vjb25kTm90aWZpY2F0aW9uSW5EYXlzIiwiaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzIiwibmJRdWVzdGlvbnNNaW4iLCJuYlF1ZXN0aW9uc01heCIsIm5iQ2hvaWNlc01heCIsIm5iTmV3UXVlc3Rpb25uYWlyZXMiLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVCZWdpbiIsImhvdXJHaXZlTmV3UXVlc3Rpb25uYWlyZUVuZCIsIm1heFF1ZXN0aW9ubmFpcmVTZW5kZWRBdFNhbWVUaW1lIiwibWluU2VhcmNoUXVlc3Rpb25uYWlyZXMiLCJmaWVsZE5ld1F1ZXN0aW9ubmFpcmVzIiwibmJRdWVzdGlvbm5haXJlc0J5R3JvdXBNaW4iLCJuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heCIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZE1pbkxlbmd0aCIsInBhc3N3b3JkIiwibWlubGVuZ3RoIiwiZGlyQ2FjaGVVc2VycyIsImRpckNhY2hlVXNlcnNBbnN3ZXJzIiwiZGlyQ2FjaGVRdWVzdGlvbm5haXJlcyIsImRpckNhY2hlUXVlc3Rpb25zIiwiZGlyQ2FjaGVVc2Vyc1F1ZXN0aW9ubmFpcmVzIiwiZGlySFRNTFF1ZXN0aW9ubmFpcmVzIiwiZGlyV2ViUXVlc3Rpb25uYWlyZXMiLCJxdWVzdGlvbm5haXJlUm91dGVzIiwiZ2V0TGlzdE5leHRRdWVzdGlvbm5haXJlcyIsImdldFF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRSYW5kb21RdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyIsInByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzIiwicHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlcyIsInJlZ2VuZXJhdGVIVE1MIiwic2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIiwic2VhcmNoUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdyb3VwUm91dGVzIiwiZ2V0R3JvdXBSb3V0ZSIsInByZXZpZXdHcm91cFJvdXRlcyIsInNlYXJjaEdyb3Vwc1JvdXRlIiwicXVlc3Rpb25zUm91dGUiLCJ0YWdzU2VhcmNoUm91dGUiLCJnZXRBZG1pblN0YXRzIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiR3JvdXAiLCJRdWVzdGlvbiIsInRleHQiLCJyYW5rIiwibWluIiwiZGVmYXVsdFZhbHVlIiwiQ2hvaWNlIiwic2VhcmNoIiwic2VhcmNoR3JvdXBzIiwiZGlyQ2FjaGVHcm91cHMiLCJkaXJDYWNoZVRhZ3MiLCJkaXJIVE1MR3JvdXBzIiwiZGlySFRNTE5ld3MiLCJkaXJIVE1MVGFncyIsImRpcldlYkdyb3VwcyIsImRpcldlYk5ld3MiLCJkaXJXZWJUYWdzIiwibmJSYW5kb21SZXN1bHRzIiwibmJUYWdzTWluIiwibmJUYWdzTWF4IiwidXNlclJvdXRlcyIsImNoZWNrRGVsZXRlTGlua1JvdXRlIiwiY2hlY2tJZklzRW1haWxmcmVlUm91dGUiLCJjaGVja0xvZ2luUm91dGUiLCJjaGVja05ld0xvZ2luTGlua1JvdXRlIiwiY2hlY2tTdWJzY3JpYmVUb2tlblJvdXRlIiwiY29ubmVjdGlvblJvdXRlIiwiY29ubmVjdGlvbldpdGhMaW5rUm91dGUiLCJjcmVhdGVVc2VyUm91dGUiLCJnZXRHb2RDaGlsZHMiLCJnZXRHb2RmYXRoZXJSb3V0ZSIsImdldExvZ2luTGlua1JvdXRlIiwiZ2V0UGF5bWVudHMiLCJnZXRVc2VySW5mb3MiLCJnZXRVc2Vyc1F1ZXN0aW9ubmFpcmVzUm91dGUiLCJzZWFyY2hVc2VyUm91dGUiLCJzaWdudXBDb21wbGV0aW9uUm91dGUiLCJzdWJzY3JpYmVSb3V0ZSIsInVuc3Vic2NyaWJlUm91dGUiLCJ1cGRhdGVVc2VySW5mb3MiLCJ2YWxpZGF0ZVVzZXJSb3V0ZSIsIm5hbWUiLCJlbWFpbCIsIm5ld1Bhc3N3b3JkIiwiY29kZUdvZGZhdGhlciIsImNndU9rIiwidmFsdWUiLCJ0aW1lRGlmZmVyZW5jZU1pbiIsInRpbWVEaWZmZXJlbmNlTWF4IiwiZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIiwiYWRkQnRuVHh0IiwiYWRkT2tNZXNzYWdlIiwiYWxlcnROZXdXaW5kb3ciLCJiYWRVcmwiLCJidG5MaW5rVG9RdWVzdGlvbm5haXJlIiwiYnRuUHJvcG9zZUNvbm5lY3Rpb24iLCJidG5Qcm9wb3NlU3Vic2NyaWJlIiwiYnRuU2hvd09uV2ViU2l0ZSIsImRlbGV0ZUJ0blR4dCIsImRlbGV0ZUZhaWxNZXNzYWdlIiwiZGVsZXRlT2tNZXNzYWdlIiwiZmFpbEF1dGgiLCJmYWlsQXV0aENyb24iLCJmYWlsQXV0aEhlYWRlciIsImZhaWxBdXRoSWQiLCJmYWlsQXV0aFRva2VuIiwibmVlZGVkUGFyYW1zIiwibmV4dFBhZ2UiLCJub3RBbGxvd2VkIiwibm90UmVxdWlyZWQiLCJub3RWYWxpZEZvcm1hdCIsInByZXZpb3VzUGFnZSIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JBZG1pbiIsInNpdGVIVE1MVGl0bGUiLCJzaXRlTWV0YURlc2NyaXB0aW9uIiwic2NyaXB0VGltaW5nQWxlcnQiLCJzY3JpcHRUaW1pbmdJbmZvIiwic3RhdHNBZG1pbiIsInN1YnNjcmlwdGlvbkNhbGwiLCJ1cGRhdGVCdG5UeHQiLCJ1cGRhdGVPa01lc3NhZ2UiLCJhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQiLCJpbmZvc0V4cGlyYXRlZCIsImluZm9zRXhwaXJhdGVkQWRtaW4iLCJpbmZvc05iRGF5cyIsImluZm9zTmJEYXlzQWRtaW4iLCJpbmZvc1BheW1lbnRzQWRtaW4iLCJpc05vdFZhbGlkZWQiLCJtYWlsRW5kRnJlZVRpbWVCb2R5SFRNTCIsIm1haWxFbmRGcmVlVGltZUJvZHlUeHQiLCJtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IiwibWFpbEVuZEZyZWVUaW1lTWVzc2FnZSIsIm1haWxFbmRGcmVlVGltZVN1YmplY3QiLCJtYWlsRXhwaXJhdGlvbkJvZHlIVE1MIiwibWFpbEV4cGlyYXRpb25Cb2R5VHh0IiwibWFpbEV4cGlyYXRpb25MaW5rVHh0IiwibWFpbEV4cGlyYXRpb25NZXNzYWdlIiwibWFpbEV4cGlyYXRpb25SZWxhdW5jaFR4dCIsIm1haWxFeHBpcmF0aW9uU3ViamVjdCIsIm1haWxOZXdFbGVtZW50Rm9yR3JvdXBUeHQiLCJtYWlsTmV3UXVlc3Rpb25uYWlyZUJvZHlUeHQiLCJtYWlsU3RvcE1haWxMaW5rVHh0IiwibmVlZEtub3dJZk5vdGljZU9rIiwibmVlZEludGVnZXJOdW1iZXJPZkRheXMiLCJuZWVkTWluTnVtYmVyT2ZEYXlzIiwibmVlZE5vdFRvb0xvbmdEYXlzTGlzdCIsIm5lZWROdW1iZXJPZkRheXMiLCJuZWVkVW5pcXVlRGF5c0xpc3QiLCJuZWVkVmFsaWREYXlzTGlzdCIsIm5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIiLCJ1bnN1YnNjcmlwdGlvbk9rIiwidW5zdWJzY3JpcHRpb25GYWlsIiwiVG9vbCIsImlzRW1wdHkiLCJteVZhciIsInVuZGVmaW5lZCIsInRyaW0iLCJ0cmltSWZOb3ROdWxsIiwibXlTdHJpbmciLCJzaG9ydGVuSWZMb25nZXJUaGFuIiwibWF4IiwibGVuZ3RoIiwic3Vic3RyaW5nIiwicmVwbGFjZUFsbCIsIm1hcE9iaiIsInJlcGxhY2VFbHRzIiwiUmVnRXhwIiwiT2JqZWN0Iiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwibWF0Y2hlZCIsImdldFJhbmRvbUludCIsIk1hdGgiLCJjZWlsIiwiZmxvb3IiLCJyYW5kb20iLCJkYXRlRm9ybWF0IiwiZGF0ZVN0cmluZyIsImxhbmciLCJteURhdGUiLCJEYXRlIiwibXlEYXkiLCJnZXREYXRlIiwibXlNb3VudGgiLCJnZXRNb250aCIsIm15WWVhciIsImdldEZ1bGxZZWFyIiwiZ2V0UGFzc3dvcmQiLCJuYkNhck1pbiIsIm5iQ2FyTWF4IiwibmJDYXIiLCJsZXR0ZXJzIiwib3RoZXJzIiwiaSIsImhlYWRMaW5rcyIsImFuY2hvciIsImF0dHJpYnV0ZXMiLCJocmVmIiwiaWQiLCJmb290TGlua3MiLCJyZWwiLCJtYXhRdWVzdGlvbm5haXJlc0J5UGFnZSIsInVzZXJIb21lUGFnZSIsImFkbWluSG9tZVBhZ2UiLCJtYW5hZ2VySG9tZVBhZ2UiLCJzdWJzY3JpYmVQYWdlIiwiY29ubmVjdGlvblBhZ2UiLCJhY2NvdW50UGFnZSIsInF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2UiLCJ1c2Vyc01hbmFnZW1lbnRQYWdlIiwibmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSIsImlsbHVzdHJhdGlvbkRpciIsInNpdGVTbG9nYW4iLCJob21lVGl0bGUxIiwiaG9tZVAxIiwiaG9tZVRpdGxlMiIsImhvbWVQMiIsIm5ld1F1ZXN0aW9ubmFpcmVzVGl0bGUiLCJuZXdRdWVzdGlvbm5haXJlc0ludHJvIiwiZXhwbGFuYXRpb25UaXRsZSIsImV4cGxhbmF0aW9uVHh0Iiwibm9KU05vdGlmaWNhdGlvbiIsInRhZ3NMaXN0VHh0IiwiYWJvdXRQYWdlIiwiY2d1UGFnZSIsImRlbGV0ZUxpbmtQYWdlIiwibG9naW5MaW5rUGFnZSIsIm5ld0xvZ2luTGlua1BhZ2UiLCJzdG9wTWFpbFBhZ2UiLCJ1cGRhdGVBY2NvdW50UGFnZSIsInVzZXJIb21lUGFnZVR4dCIsInZhbGlkYXRpb25MaW5rUGFnZSIsIm1haWxSZWNpcGllbnRUeHQiLCJsaWNlbmNlVHh0IiwiaG9tZVBhZ2VUeHQiLCJob21lQnRuQWJvdXRUeHQiLCJob21lQnRuU3Vic2NyaWJlVHh0IiwiaG9tZVN1YmNyaXB0aW9uRm9ybVRpdGxlIiwibmV3c0xpc3RUaXRsZSIsInRhZ0xpc3RUaXRsZSIsInRhZ0xpc3RNZXRhRGVzYyIsInRhZ0xpc3RJbnRybyIsImFuc3dlcnNFeHBsYW5hdGlvbnNMaW5rVGV4dCIsInF1aXpFbGVtZW50TGlua3NJbnRybyIsInF1aXpFbGVtZW50U3ViY3JpcHRpb25Gb3JtVGl0bGUiLCJleHBsYW5hdGlvbkVsZW1lbnRUeHQiLCJ0d2l0dGVyQWNjb3VudCIsIm1heFF1ZXN0aW9ubmFpcmVzU2l0ZUhvbWVQYWdlIiwic2F2ZUxvY2FseSIsImRhdGEiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldExvY2FseSIsImpzb24iLCJwYXJzZSIsImdldEl0ZW0iLCJyZW1vdmVMb2NhbHkiLCJyZW1vdmVJdGVtIiwiYWRkRWxlbWVudCIsImVsdFBhcmVudCIsImVsdFR5cGUiLCJlbHRDb250ZW50IiwiZWx0SWQiLCJlbHRDbGFzcyIsImVsdEF0dHJpYnV0ZXMiLCJuZXdFbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiY2xhc3NMaXN0IiwiYWRkIiwiYXR0cmlidXROYW1lIiwic2V0QXR0cmlidXRlIiwiaW5uZXJIVE1MIiwiYXBwZW5kQ2hpbGQiLCJoZWxsb0RldiIsImNvbnNvbGUiLCJsb2ciLCJ1cGRhdGVBY2NvdW50TGluayIsInN0YXR1cyIsImNvbmZpZ1RlbXBsYXRlIiwibGluayIsImdldEVsZW1lbnRCeUlkIiwiaG9tZVBhZ2UiLCJnZXRVcmxQYXJhbXMiLCJsb2NhdGlvbiIsInBhcmFtZXRlcnMiLCJzcGxpdCIsInBhcmFtIiwiZGF0YXMiLCJkZWNvZGVVUkkiLCJnZXRUaW1lRGlmZmVyZW5jZSIsInRpbWVMb2NhbCIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2V0U2Vzc2lvbiIsInVzZXJJZCIsInRva2VuIiwiZHVyYXRpb25UUyIsInN0b3JhZ2VVc2VyIiwiZHVyYXRpb24iLCJjaGVja0Fuc3dlckRhdGFzIiwibGFzdEFuc3dlciIsImFuc3dlciIsIm5iQ29ycmVjdEFuc3dlcnMiLCJuYlF1ZXN0aW9ucyIsIlF1ZXN0aW9ubmFpcmVJZCIsIkdyb3VwSWQiLCJjaGVja1Nlc3Npb24iLCJ1cmxSZWRpcmVjdGlvbiIsIm1lc3NhZ2UiLCJ1cmxXYW50ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInVzZXJEYXRhcyIsInJlZGlyZWN0VXNlciIsInVzZXIiLCJub3ciLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJvbmxvYWQiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsImlzVmFsaWQiLCJsYW5ndWFnZSIsInRpbWVEaWZmZXJlbmNlIiwibmJEYXlzT2siLCJ1cmxBY2NvdW50Iiwid2luZG93IiwiaW5kZXhPZiIsImFzc2lnbiIsIm9uZXJyb3IiLCJzdGF0dXNUZXh0Iiwic2VuZCIsImRpdlJlc3BvbnNlIiwiaW5pdGlhbGlzZSIsInQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwiRE9ORSIsImUiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVB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Q0FBQ2dELENBQXpEOztBQUNBbkIsU0FBRyxDQUFDb0Isa0JBQUosR0FBeUIsWUFDekI7QUFDSSxZQUFJLEtBQUtDLFVBQUwsSUFBbUJwQixjQUFjLENBQUNxQixJQUF0QyxFQUNBO0FBQ0ksY0FBSWxCLFFBQVEsR0FBQ3pFLElBQUksQ0FBQ0ksS0FBTCxDQUFXLEtBQUtzRSxZQUFoQixDQUFiO0FBQ0EsY0FBSSxLQUFLNUMsTUFBTCxLQUFnQixHQUFoQixJQUF1QjJDLFFBQVEsQ0FBQ2IsT0FBVCxJQUFvQjlKLFNBQS9DLEVBQ0kwRyxnRUFBVSxDQUFDOEUsV0FBRCxFQUFjLEdBQWQsRUFBbUJiLFFBQVEsQ0FBQ2IsT0FBVCxDQUFpQi9JLE9BQWpCLENBQXlCLE1BQXpCLEVBQWlDc0MsV0FBakMsQ0FBbkIsRUFBa0UsRUFBbEUsRUFBc0UsQ0FBQyxTQUFELENBQXRFLENBQVYsQ0FESixLQUdJcUQsZ0VBQVUsQ0FBQzhFLFdBQUQsRUFBYyxHQUFkLEVBQW1CNUwsa0JBQWtCLENBQUNtQixPQUFuQixDQUEyQixNQUEzQixFQUFtQ3NDLFdBQW5DLENBQW5CLEVBQW9FLEVBQXBFLEVBQXdFLENBQUMsT0FBRCxDQUF4RSxDQUFWO0FBQ1A7QUFDSixPQVZEOztBQVdBa0gsU0FBRyxDQUFDZ0IsSUFBSjtBQUNIO0FBQ0osR0FwQkQsQ0FxQkEsT0FBTU8sQ0FBTixFQUNBO0FBQ0lwRixvRUFBVSxDQUFDOEUsV0FBRCxFQUFjLEdBQWQsRUFBbUJwTyxXQUFuQixFQUFnQyxFQUFoQyxFQUFvQyxDQUFDLE9BQUQsQ0FBcEMsQ0FBVjtBQUNIO0FBQ0osQ0EzQkQ7O0FBNEJBcU8sVUFBVSxHIiwiZmlsZSI6Ii4vSlMvdW5zdWJzY3JpYmUuYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvdW5zdWJzY3JpYmUuanNcIik7XG4iLCJjb25zdCB1c2VycyA9IHJlcXVpcmUoXCIuL3VzZXJzXCIpO1xuY29uc3QgcXVlc3Rpb25uYWlyZXMgPSByZXF1aXJlKFwiLi9xdWVzdGlvbm5haXJlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIGFwaVVybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpXCIsXG4gICAgc2l0ZVVybDogXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIixcbiAgICBhZG1pbk5hbWU6IFwiRmFicmljZVwiLFxuICAgIGFkbWluRW1haWw6IFwiZGV2QHdpa2lsZXJuaS5jb21cIixcbiAgICBzZW5kZXJOYW1lOiBcIldpa2lMZXJuaSAobG9jYWwpXCIsXG4gICAgc2VuZGVyRW1haWw6IFwiYm9uam91ckB3aWtpbGVybmkuY29tXCIsXG4gICAgYWRtaW5MYW5nOiBcImZyXCIsXG4gICAgdGhlbWU6IFwid2lraWxlcm5pXCIsIC8vIGxlIHRow6htZSB1dGlsaXPDqSAoZGFucyAvdmlld3MpIHBvdXIgZ8OpbsOpcmVyIGxlcyBwYWdlcyBIVE1MLiBDb250aWVudCBzZXMgcHJvcHJlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLlxuICAgIGF2YWlsYWJsZUxhbmdzOiBbXCJmclwiXSwvLyBMYW5ndWFnZXMgaW4gd2hpY2ggdGhlIHNpdGUgaXMgYXZhaWxhYmxlLiBUaGUgZmlyc3Qgb25lIGlzIHRoZSBkZWZhdWx0IG9uZS5cbiAgICBzaXRlTmFtZTogXCJXaWtpTGVybmkgKGxvY2FsKVwiLFxuICAgIGJlZ2luQ29kZUdvZGZhdGhlcjogXCJXTFwiLCAvLyBjYXNlLXNlbnNpdGl2ZSBhbmQgY2FuJ3QgY29udGFpbiBcIkBcIiAhXG4gICAgZGVmYXVsdFJlY2VpcHREYXlzOiBcIjE0N1wiLCAvLyBQYXIgZMOpZmF1dCwgcXVlbChzKSBqb3VyKHMpIGRlIGxhIHNlbWFpbmUsIGwndXRpbGlzYXRldXIgcmXDp29pdC1pbCBxdWVscXVlIGNob3NlID8gKDE9ZGltYW5jaGUsIDI9bHVuZGkuLi4gNz1zYW1lZGkpXG4gICAgY3JvblRpbWluZ0FsZXJ0SW5TZWNvbmRlOiAxMjAsIC8vIGZvciBsb2dzXG4gICAgcmVzcG9uc2VUaW1pbmdBbGVydEluU2Vjb25kZTogMywgLy8gaWRlbVxuICAgIHRva2VuU2lnbnVwVmFsaWRhdGlvblRpbWVJbkhvdXJzOiBcIjQ4aFwiLCAvLyBodHRwczovL2dpdGh1Yi5jb20vemVpdC9tc1xuICAgIHRva2VuTG9naW5MaW5rVGltZUluSG91cnM6IFwiMWhcIixcbiAgICB0b2tlbkNvbm5leGlvbk1pblRpbWVJbkhvdXJzOiBcIjI0aFwiLFxuICAgIHRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5czogXCIxODAgZGF5c1wiLFxuICAgIHRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzOiBcIjFoXCIsLy8gZm9yIGVtYWlsICYgcGFzc3dvcmQgY2hhbmdpbmdcbiAgICB0b2tlbkRlbGV0ZVVzZXJUaW1lSW5Ib3VyczogXCIxaFwiLFxuICAgIHRva2VuVW5zdWJzY3JpYmVMaW5rVGltZUluRGF5czogXCI3IGRheXNcIiwgLy8gdG9rZW4gc2VuZCB3aXRoIHN1YnNjcmlwdGlvbidzIGVtYWlsc1xuICAgIGZyZWVBY2NvdW50VGltaW5nSW5EYXlzOiAwLC8vIGlmIDAgPSB1bmxpbWl0ZWRcbiAgICBmcmVlQWNjb3VudEV4cGlyYXRpb25Ob3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgYWNjb3VudEV4cGlyYXRpb25GaXJzdE5vdGlmaWNhdGlvbkluRGF5czogMTAsXG4gICAgYWNjb3VudEV4cGlyYXRpb25TZWNvbmROb3RpZmljYXRpb25JbkRheXM6IDMsXG4gICAgaW5hY3RpdmVBY2NvdW50VGltZVRvRGVsZXRlSW5EYXlzOiAxODAsXG4gICAgLy8gUXVlc3Rpb25uYWlyZXM6XG4gICAgbmJRdWVzdGlvbnNNaW46IDEsIC8vIG1pbmltdW0gbnVtYmVyIG9mIHF1ZXN0aW9ucyBmb3IgdGhlIHF1ZXN0aW9ubmFpcmUgdG8gYmUgcHVibGlzaGFibGVcbiAgICBuYlF1ZXN0aW9uc01heDogMiwgLy8gaWYgMCA9IG5vdCBtYXhpbXVtXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYk5ld1F1ZXN0aW9ubmFpcmVzOiAxMiwvLyBmb3IgUlNTLCBldGMuXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW46NywgLy8gaW4gdXNlciBsb2NhbCB0aW1lXG4gICAgaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlRW5kOjIxLCAvLyBpZGVtXG4gICAgbWF4UXVlc3Rpb25uYWlyZVNlbmRlZEF0U2FtZVRpbWU6IDUwLCAvLyBmb3Igc3Vic2NyaXB0aW9uJ3MgZS1tYWlsaW5nXG4gICAgbWluU2VhcmNoUXVlc3Rpb25uYWlyZXM6IDMsXG4gICAgZmllbGROZXdRdWVzdGlvbm5haXJlcyA6IFwicHVibGlzaGluZ0F0XCIsIC8vIGZpZWxkIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IHF1ZXN0aW9ubmFpcmVzLCBjYW4gYmUgXCJjcmVhdGVkQXRcIiwgXCJ1cGRhdGVkQXRcIiBvciBcInB1Ymxpc2hpbmdBdFwiXG4gICAgLy8gR3JvdXBzIDpcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1pbjogMSxcbiAgICBuYlF1ZXN0aW9ubmFpcmVzQnlHcm91cE1heDogMCxcbiAgICAvLyBJbGx1c3RyYXRpb25zOlxuICAgIG5iSWxsdXN0cmF0aW9uc01pbjogMSxcbiAgICBuYklsbHVzdHJhdGlvbnNNYXg6IDEsXG4gICAgbWF4SWxsdXN0cmF0aW9uU2l6ZWluT2N0ZXQ6IDEwMDAwMDAsLy8gcGFzIGNvbnRyw7Rsw6kgcG91ciBsJ2luc3RhbnQuIMOAIHJldm9pci5cbiAgICBtaW1lVHlwZXNGb3JJbGx1c3RyYXRpb246IFsgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2UvcG5nXCIgXSxcbiAgICAvLyAtLSBVcGxvYWQgYW5kIHJlc2l6ZTpcbiAgICBpbGx1c3RyYXRpb25zV2lkdGhNYXhJblB4OiA1MDAsXG4gICAgaWxsdXN0cmF0aW9uc01pbmlhdHVyZXNXaWR0aE1heEluUHg6IDIwMCxcbiAgICAvLyBMaW5rczpcbiAgICBuYkxpbmtzTWluOiAxLFxuICAgIG5iTGlua3NNYXg6IDAsXG4gICAgLy8gUXVlc3Rpb25zICYgcmVzcG9uc2VzOlxuICAgIG5iUXVlc3Rpb25zTWluOiAxLFxuICAgIG5iUXVlc3Rpb25zTWF4OiAwLFxuICAgIG5iQ2hvaWNlc01heDogMTAsXG4gICAgLy8gw6Agc3VwcHJpbWVyIHF1YW5kIHRvdXMgbGVzIFwicmVxdWlyZVwiIMOgIGpvdXI6XG4gICAgcGFzc3dvcmRNaW5MZW5ndGg6IHVzZXJzLnBhc3N3b3JkLm1pbmxlbmd0aCxcbiAgICBkaXJDYWNoZVVzZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzOiB1c2Vycy5kaXJDYWNoZVVzZXJzQW5zd2VycyxcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ubmFpcmVzLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zOiBxdWVzdGlvbm5haXJlcy5kaXJDYWNoZVF1ZXN0aW9ucyxcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXM6IHF1ZXN0aW9ubmFpcmVzLmRpckhUTUxRdWVzdGlvbm5haXJlcyxcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlczogcXVlc3Rpb25uYWlyZXMuZGlyV2ViUXVlc3Rpb25uYWlyZXNcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxueyAgICBcbiAgICAvLyBBUEkncm91dGVzIChhZnRlciBcImFwaVVybFwiIGRlZmluZWQgaW4gaW5zdGFuY2UuanMpXG4gICAgcXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVlc3Rpb25uYWlyZVwiLC8vIGxhIGJhc2Ugw6AgbGFxdWVsbGUgcydham91dGUgbGVzIHJvdXRlcyBzdWl2YW50ZXNcbiAgICBnZXRMaXN0TmV4dFF1ZXN0aW9ubmFpcmVzOiBcIi9nZXRsaXN0bmV4dHF1ZXN0aW9ubmFpcmVzL1wiLFxuICAgIGdldFF1ZXN0aW9ubmFpcmVSb3V0ZXM6IFwiL2dldFwiLFxuICAgIGdldFJhbmRvbVF1ZXN0aW9ubmFpcmVzUm91dGUgOiBcIi9nZXRyYW5kb21cIiwgXG4gICAgZ2V0U3RhdHNRdWVzdGlvbm5haXJlcyA6IFwiL3N0YXRzL1wiLFxuICAgIHByZXZpZXdRdWVzdGlvbm5haXJlUm91dGVzOiBcIi9wcmV2aWV3XCIsXG4gICAgcHVibGlzaGVkUXVlc3Rpb25uYWlyZVJvdXRlczogXCIvcXVpei9cIixcbiAgICByZWdlbmVyYXRlSFRNTDogXCIvaHRtbHJlZ2VuZXJhdGVkXCIsXG4gICAgc2VhcmNoQWRtaW5RdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoYWRtaW5cIixcbiAgICBzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gZ3JvdXBlcyA6XG4gICAgZ3JvdXBSb3V0ZXM6IFwiL2dyb3VwXCIsXG4gICAgZ2V0R3JvdXBSb3V0ZTogXCIvZ2V0L1wiLFxuICAgIHByZXZpZXdHcm91cFJvdXRlczogXCIvcHJldmlld1wiLFxuICAgIHNlYXJjaEdyb3Vwc1JvdXRlIDogXCIvc2VhcmNoXCIsXG4gICAgLy8gLS0gcXVlc3Rpb25zICYgY2hvaWNlcyA6XG4gICAgcXVlc3Rpb25zUm91dGU6IFwiL3F1ZXN0aW9uL1wiLFxuICAgIC8vIC0tIHRhZ3MgOlxuICAgIHRhZ3NTZWFyY2hSb3V0ZTogXCIvdGFncy9zZWFyY2gvXCIsXG4gICAgLy8gLS0gYW5zd2VycyA6XG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRQcmV2aW91c0Fuc3dlcnM6IFwiL3VzZXIvYW5zd2Vycy9cIixcbiAgICBnZXRTdGF0c0Fuc3dlcnMgOiBcIi91c2VyL2Fud3N3ZXJzL3N0YXRzL1wiLC8vIGZvbmN0aW9ubmUgYXVzc2kgcG91ciBsZXMgZ3JvdXBlc1xuICAgIHNhdmVBbnN3ZXJzUm91dGU6IFwiL2Fuc3dlci9cIiwvLyBpZGVtXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgUXVlc3Rpb25uYWlyZSA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgICAgICBpbnRyb2R1Y3Rpb246IHsgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoUXVlc3Rpb25uYWlyZXMgOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBHcm91cCA6XG4gICAge1xuICAgICAgICB0aXRsZTogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2x1ZzogeyBtYXhsZW5ndGg6IDE1MCB9LCAvLyBjaGFtcCByZXF1aXMgbWFpcyBjYWxjdWzDqSDDoCBwYXJ0aXIgZHUgdGl0cmUgcWQgbGFpc3PDqSB2aWRlIGRhbnMgbGUgZm9ybXVsYWlyZVxuICAgIH0sXG4gICAgUXVlc3Rpb24gOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmFuazogeyByZXF1aXJlZDogdHJ1ZSwgbWluOjEsIGRlZmF1bHRWYWx1ZToxIH1cbiAgICB9LCAgICAgICAgICBcbiAgICBDaG9pY2UgOlxuICAgIHtcbiAgICAgICAgdGV4dDogeyBtYXhsZW5ndGg6IDI1NSwgcmVxdWlyZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgc2VhcmNoOiB7IG1pbmxlbmd0aDogMywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2hHcm91cHM6IHsgbWlubGVuZ3RoOiAzLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIC8vIEVtcGxhY2VtZW50IGRlcyBmaWNoaWVycyBKU09OIGfDqW7DqXLDqXMgOlxuICAgIGRpckNhY2hlR3JvdXBzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9ncm91cHNcIixcbiAgICBkaXJDYWNoZVF1ZXN0aW9ubmFpcmVzIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlc1wiLFxuICAgIGRpckNhY2hlUXVlc3Rpb25zIDogXCJkYXRhcy9xdWVzdGlvbm5haXJlcy9xdWVzdGlvbnNcIixcbiAgICBkaXJDYWNoZVRhZ3MgOiBcImRhdGFzL3F1ZXN0aW9ubmFpcmVzL3RhZ3NcIixcbiAgICBkaXJDYWNoZVVzZXJzUXVlc3Rpb25uYWlyZXMgOiBcImRhdGFzL3VzZXJzL3F1ZXN0aW9ubmFpcmVzXCIsXG4gICAgLy8gRW1wbGFjZW1lbnQgZGVzIGZpY2hpZXJzIEhUTUwgZ8OpbsOpcsOpcyA6XG4gICAgZGlySFRNTEdyb3VwcyA6IFwiZnJvbnQvcHVibGljL3F1aXovZ3BcIixcbiAgICBkaXJIVE1MUXVlc3Rpb25uYWlyZXMgOiBcImZyb250L3B1YmxpYy9xdWl6XCIsXG4gICAgZGlySFRNTE5ld3MgOiBcImZyb250L3B1YmxpYy9xdWl6c1wiLFxuICAgIGRpckhUTUxUYWdzIDogXCJmcm9udC9wdWJsaWMvcXVpenNcIixcbiAgICAvLyBJZGVtIG1haXMgcG91ciB1cmxzIDpcbiAgICBkaXJXZWJHcm91cHMgOiBcInF1aXovZ3BcIixcbiAgICBkaXJXZWJRdWVzdGlvbm5haXJlcyA6IFwicXVpelwiLFxuICAgIGRpcldlYk5ld3MgOiBcInF1aXpzL1wiLFxuICAgIGRpcldlYlRhZ3MgOiBcInF1aXpzL1wiLFxuICAgIC8vIGxpbWl0ZSBkZXMgcsOpc3VsdGF0IGR1IG1vdGV1ciBkZSByZWNoZXJjaGUsIHF1YW5kIGRlbWFuZGUgZGUgcsOpc3VsdGF0cyBhdSBoYXNhcmQgOlxuICAgIG5iUmFuZG9tUmVzdWx0cyA6IDMsXG4gICAgLyogVmFsZXVycyBlbiBmYWl0IGTDqWZpbmllcyBkYW5zIGluc3RhbmNlLmpzIGRvbmMgw6Agc3VwcHJpbWVyIHF1YW5kIHBsdXMgdXRpbGlzw6llcyBhaWxsZXVycyA6ICovXG4gICAgbmJRdWVzdGlvbnNNaW46IDEsXG4gICAgbmJRdWVzdGlvbnNNYXg6IDAsXG4gICAgbmJDaG9pY2VzTWF4OiAxMCxcbiAgICBuYlRhZ3NNaW46IDAsXG4gICAgbmJUYWdzTWF4OiAwLCAvLyAwID0gbm90IG1heCAgICBcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICAgIC8vIEFQSSdyb3V0ZXMgKGFmdGVyIFwiYXBpVXJsXCIgZGVmaW5lZCBpbiBpbnN0YW5jZS5qcylcbiAgICB1c2VyUm91dGVzOiBcIi91c2VyXCIsXG4gICAgY2hlY2tEZWxldGVMaW5rUm91dGU6IFwiL2NvbmZpcm1kZWxldGUvXCIsICAgXG4gICAgY2hlY2tJZklzRW1haWxmcmVlUm91dGU6IFwiL2lzZW1haWxmcmVlXCIsXG4gICAgY2hlY2tMb2dpblJvdXRlOiBcIi9jaGVja2xvZ2luL1wiLFxuICAgIGNoZWNrTmV3TG9naW5MaW5rUm91dGU6IFwiL2NvbmZpcm1uZXdsb2dpbi9cIixcbiAgICBjaGVja1N1YnNjcmliZVRva2VuUm91dGU6IFwiL3ZhbGlkYXRpb24vXCIsXG4gICAgY29ubmVjdGlvblJvdXRlOiBcIi9sb2dpblwiLFxuICAgIGNvbm5lY3Rpb25XaXRoTGlua1JvdXRlOiBcIi9jaGVja2xvZ2lubGlua1wiLFxuICAgIGNyZWF0ZVVzZXJSb3V0ZTogXCIvY3JlYXRlXCIsXG4gICAgZ2V0QWRtaW5TdGF0czogXCIvZ2V0YWRtaW5zdGF0cy9cIixcbiAgICBnZXRHb2RDaGlsZHM6IFwiL2dldGdvZGNoaWxkcy9cIiwgICAgXG4gICAgZ2V0R29kZmF0aGVyUm91dGU6IFwiL2dldGdvZGZhdGhlcmlkXCIsXG4gICAgZ2V0TG9naW5MaW5rUm91dGU6IFwiL2dldGxvZ2lubGlua1wiLFxuICAgIGdldFBheW1lbnRzOiBcIi9wYXltZW50L2dldGZvcm9uZXVzZXIvXCIsXG4gICAgZ2V0VXNlckluZm9zOiBcIi9nZXQvXCIsXG4gICAgZ2V0VXNlcnNRdWVzdGlvbm5haXJlc1JvdXRlOiBcIi9nZXR1c2Vyc3F1ZXN0aW9ubmFpcmVzL1wiLC8vIGxlcyBxdWVzdGlvbm5haXJlcyBhdXhxdWVscyBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIGV1IGFjY8OocyB2aWEgc29uIGFib25uZW1lbnQgICAgXG4gICAgc2VhcmNoVXNlclJvdXRlOiBcIi9zZWFyY2gvXCIsXG4gICAgc2lnbnVwQ29tcGxldGlvblJvdXRlOiBcIi9zaWdudXBjb21wbGV0aW9uL1wiLFxuICAgIHN1YnNjcmliZVJvdXRlOiBcIi9zaWdudXBcIixcbiAgICB1bnN1YnNjcmliZVJvdXRlOiBcIi9zdWJzY3JpcHRpb24vc3RvcC9cIixcbiAgICB1cGRhdGVVc2VySW5mb3M6IFwiL21vZGlmeS9cIixcbiAgICB2YWxpZGF0ZVVzZXJSb3V0ZTogXCIvdmFsaWRhdGUvXCIsXG4gICAgLy8gZm9ybXMgOiDDoCBjb21wbMOpdGVyIGF2ZWMgdmFsZXVycyBwYXIgZMOpZmF1dCwgZXRjLiBjZiBtb2TDqGxlXG4gICAgbmFtZTogeyBtYXhsZW5ndGg6IDcwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIGVtYWlsOiB7IG1heGxlbmd0aDogMjU1LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHBhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyLCByZXF1aXJlZDogdHJ1ZSB9LCAvLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iY3J5cHQjc2VjdXJpdHktaXNzdWVzLWFuZC1jb25jZXJuc1xuICAgIG5ld1Bhc3N3b3JkOiB7IG1pbmxlbmd0aDogOCwgbWF4bGVuZ3RoOjcyIH0sXG4gICAgY29kZUdvZGZhdGhlcjogeyBtYXhsZW5ndGg6IDI1NSB9LFxuICAgIGNndU9rOiB7IHZhbHVlOiBcInRydWVcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICBzZWFyY2g6IHsgbWlubGVuZ3RoOiAxLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHRpbWVEaWZmZXJlbmNlTWluOiAtNzIwLFxuICAgIHRpbWVEaWZmZXJlbmNlTWF4OiA4NDAsXG4gICAgLy8gSlNPTiBkaXJcbiAgICBkaXJDYWNoZVVzZXJzIDogXCJkYXRhcy91c2Vyc1wiLFxuICAgIGRpckNhY2hlVXNlcnNBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy9hbnN3ZXJzXCIsXG4gICAgZGlyQ2FjaGVVc2Vyc1dpdGhvdXRBbnN3ZXJzIDogXCJkYXRhcy91c2Vycy9xdWVzdGlvbm5haXJlcy93aXRob3V0XCJcbn07XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vZnIvZ2VuZXJhbFwiOiBcIi4uL2xhbmcvZnIvZ2VuZXJhbC5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuLi9sYW5nIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcL2dlbmVyYWwkXCI7IiwidmFyIG1hcCA9IHtcblx0XCIuL2ZyL3N1YnNjcmlwdGlvblwiOiBcIi4uL2xhbmcvZnIvc3Vic2NyaXB0aW9uLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL2xhbmcgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKlxcXFwvc3Vic2NyaXB0aW9uJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhZGRCdG5UeHQ6IFwiQWpvdXRlclwiLFxuICAgIGFkZE9rTWVzc2FnZSA6IFwiTGVzIGRvbm7DqWVzIG9udCBiaWVuIMOpdMOpIGVucmVnaXN0csOpZXMuXCIsXG4gICAgYWxlcnROZXdXaW5kb3c6IFwibm91dmVsbGUgZmVuw6p0cmVcIixcbiAgICBiYWRVcmwgOiBcIlRlbnRhdGl2ZSBkJ2FjY8OocyDDoCB1bmUgcGFnZSBuJ2V4aXN0YW50IHBhcyA6XCIsXG4gICAgYnRuTGlua1RvUXVlc3Rpb25uYWlyZSA6IFwiQWZmaWNoZXIgIVwiLFxuICAgIGJ0blByb3Bvc2VDb25uZWN0aW9uOiBcIkplIG1lIGNvbm5lY3RlLlwiLFxuICAgIGJ0blByb3Bvc2VTdWJzY3JpYmU6IFwiSmUgY3LDqWUgbW9uIGNvbXB0ZS5cIixcbiAgICBidG5TaG93T25XZWJTaXRlOiBcIkxpcmUgbGEgc3VpdGUgc3VyICNTSVRFX05BTUVcIixcbiAgICBkZWxldGVCdG5UeHQ6IFwiU3VwcHJpbWVyXCIsXG4gICAgZGVsZXRlRmFpbE1lc3NhZ2UgOiBcIkxhIHN1cHByZXNzaW9uIGRlIGwnZW5yZWdpc3RyZW1lbnQgI0lEIGEgw6ljaG91w6kuXCIsXG4gICAgZGVsZXRlT2tNZXNzYWdlIDogXCJMYSBzdXBwcmVzc2lvbiBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiLFxuICAgIGZhaWxBdXRoIDogXCJFcnJldXIgZCdhdXRoZW50aWZpY2F0aW9uLlwiLFxuICAgIGZhaWxBdXRoQ3JvbiA6IFwiVGVudGF0aXZlIGRlIGxhbmNlbWVudCBkJ3VuIGNyb24gc2FucyBsZSBib24gdG9rZW4uXCIsXG4gICAgZmFpbEF1dGhIZWFkZXIgOiBcIkFic2VuY2UgZGUgaGVhZGVyIEF1dGhvcml6YXRpb24uXCIsXG4gICAgZmFpbEF1dGhJZCA6IFwiSWRlbnRpZmlhbnQgbm9uIHZhbGlkZSA6IFwiLFxuICAgIGZhaWxBdXRoVG9rZW4gOiBcIlRva2VuIGludmFsaWRlIG91IHV0aWxpc2F0ZXVyIG5vbiB0cm91dsOpLlwiLFxuICAgIG5lZWRlZFBhcmFtcyA6IFwiRGVzIHBhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyBtYW5xdWFudHMgc29udCBtYW5xdWFudHMuXCIsXG4gICAgbmV4dFBhZ2UgOiBcIlBhZ2Ugc3VpdmFudGVcIixcbiAgICBub3RBbGxvd2VkIDogXCJWb3VzIG4nYXZleiBwYXMgbGVzIGRyb2l0cyBuw6ljZXNzYWlyZXMgcG91ciBjZXR0ZSBhY3Rpb24uXCIsXG4gICAgbm90UmVxdWlyZWQgOiBcIkZhY3VsdGF0aWYuXCIsXG4gICAgbm90VmFsaWRGb3JtYXQgOiBcIkZvcm1hdCBub24gdmFsaWRlLlwiLFxuICAgIHByZXZpb3VzUGFnZSA6IFwiUGFnZSBwcsOpY8OpZGVudGVcIixcbiAgICBzZXJ2ZXJFcnJvciA6IFwiRMOpc29sw6kuIFVuZSBlcnJldXIgaW1wcsOpdnVlIGVzdCBzdXJ2ZW51ZS4gU2kgY2VsYSBwZXJzaXN0ZSwgbidow6lzaXRleiDDoCBwcsOpdmVuaXIgbCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlLlwiLFxuICAgIHNlcnZlckVycm9yQWRtaW4gOiBcIkJ1ZyBkZSBsJ2FwcGxpY2F0aW9uIDpcIixcbiAgICBzaXRlSFRNTFRpdGxlIDogXCJXaWtpTGVybmkgOiBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZW4gbGliZXJ0w6lcIixcbiAgICBzaXRlTWV0YURlc2NyaXB0aW9uIDogXCJBdmVjIFdpa2lMZXJuaSwgdm91cyBhcHByZW5leiByw6lndWxpw6hyZW1lbnQgZGUgbm91dmVsbGVzIGNob3Nlcy4gVm91cyByZWNldmV6IGRlIGNvdXJ0cyBhcnRpY2xlcyBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLiBEZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51LlwiLFxuICAgIHNjcmlwdFRpbWluZ0FsZXJ0IDogXCIqKiogU2NyaXB0IGxlbnQgOiBTQ1JJUFRfVElNSU5HIG1pbGxpc2Vjb25kZXMsIHJvdXRlIDogU0NSSVBUX1VSTFwiLFxuICAgIHNjcmlwdFRpbWluZ0luZm8gOiBcIkR1csOpZSBkZSBsYSByw6lwb25zZSA6IFNDUklQVF9USU1JTkcgbWlsbGlzZWNvbmRlcywgcm91dGUgOiBTQ1JJUFRfVVJMXCIsXG4gICAgc3RhdHNBZG1pbiA6IFwiRHVyYW50IGxlcyBkZXJuacOocmVzIDI0aCA6IE5CX1VTRVJTXzI0SCBjb21wdGVzIG9udCDDqXTDqSBjcsOpw6lzLCBOQl9TVUJTQ1JJUFRJT05TXzI0SCB2YWxpZMOpcyBldCBOQl9VU0VSU19ERUxFVEVEXzI0SCBzdXBwcmltw6lzLiBOQl9BTlNXRVJTXzI0SCByw6lwb25zZXMgYXV4IHF1aXpzIG9udCDDqXTDqSBlbnJlZ2lzdHLDqWVzLjxicj5FbiB0b3V0LCBpbCB5IGEgOiBOQl9VU0VSU19UT1QgY29tcHRlcywgZG9udCBOQl9TVUJTQ1JJUFRJT05TX1RPVCB2YWxpZMOpcyBldCBOQl9TVUJTQ1JJUFRJT05TX1BSRU1JVU0gY29tcHRlcyBwcsOpbWl1bS4gTkJfQU5TV0VSU19UT1QgcsOpcG9uc2VzIGF1eCBxdWl6cyBvbnQgw6l0w6kgZW5yZWdpc3Ryw6llcy48YnI+UGFybWkgbGVzIE5CX1VTRVJTX0RFTEVURURfVE9UIGNvbXB0ZXMgc3VwcHJpbcOpcywgTkJfVVNFUlNfREVMRVRFRF9WQUxJREVEIGF2YWllbnQgdmFsaWTDqSBsZXVyIGNvbXB0ZSBldCBOQl9VU0VSU19ERUxFVEVEX1BSRU1JVU0gYXZhaWVudCBzb3VzY3JpdCB1biBjb21wdGUgcHLDqW1pdW0uXCIsXG4gICAgc3Vic2NyaXB0aW9uQ2FsbDogXCJJbnNjcml2ZXotdm91cyAhXCIsXG4gICAgdXBkYXRlQnRuVHh0OiBcIk1vZGlmaWVyXCIsXG4gICAgdXBkYXRlT2tNZXNzYWdlIDogXCJMYSBtaXNlIMOgIGpvdXIgw6Agam91ciBhIGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llLlwiXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBhbGxTdWJzY3JpcHRpb25Qcm9jZXNzZWQgOiBcIlRvdXMgbGVzIGFib25uw6lzIG9udCDDqXTDqSB0cmFpdMOpcyBwb3VyIGxlIG1vbWVudC5cIixcbiAgICBpbmZvc0V4cGlyYXRlZDogXCJWb3RyZSBhYm9ubmVtZW50IGEgZXhwaXLDqSwgbWFpcyBpbCB2b3VzIHJlc3RlIGVuY29yZSBxdWVscXVlcyBqb3VycyBhdmFudCBxdWUgdm90cmUgY29tcHRlIGV0IHZvcyBkb25uw6llcyBuZSBzb2llbnQgY29tcGzDqHRlbWVudCBzdXBwcmltw6llcy48YnI+UG91ciBjZSBmYWlyZSwgc3VpdmV6IHNhbnMgdGFyZGVyIGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc0V4cGlyYXRlZEFkbWluOiBcIkNldCBhYm9ubmVtZW50IGEgZXhwaXLDqS5cIixcbiAgICBpbmZvc05iRGF5czogXCJWb3RyZSBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+Ljxicj5Wb3VzIHBvdXZleiDDoCB0b3V0IG1vbWVudCBwcm9sb25nZXIgdm90cmUgYWJvbm5lbWVudCBlbiBzdWl2YW50IGxlcyBpbmRpY2F0aW9ucyBjaS1kZXNzb3VzIDpcIixcbiAgICBpbmZvc05iRGF5c0FkbWluOiBcIkNldCBhYm9ubmVtZW50IGVzdCBlbmNvcmUgdmFsYWJsZSA8Yj5wZW5kYW50IE5CX0RBWVMgam91cnM8L2I+LlwiLFxuICAgIGluZm9zUGF5bWVudHNBZG1pbiA6IFwiREFURV9QQVlNRU5UIDogcGFpZW1lbnQgZGUgQU1PVU5UIOKCrCBhdSBub20gZGUgQ0xJRU5UX05BTUUuXCIsXG4gICAgaXNOb3RWYWxpZGVkIDogXCJDZXQgdXRpbGlzYXRldXIgbidhIHBhcyBlbmNvcmUgdmFsaWTDqSBzb24gY29tcHRlLjxicj5Wb3VzIHBvdXZleiBsZSBmYWlyZSDDoCBzYSBwbGFjZSA8YSBocmVmPScjdmFsaWRhdGlvbk9rJz5lbiBjb2NoYW50IGxhIGNhc2UgaW5kaXF1w6llPC9hPiBldCBlbnJlZ2lzdHJhbnQuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keUhUTUw6IFwiPGgzPkJvbmpvdXIgVVNFUl9OQU1FLDwvaDM+PHA+Vm90cmUgYWJvbm5lbWVudCBncmF0dWl0IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLjxicj48YnI+UG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc291c2NyaXJlIMOgIHVuIGFib25uZW1lbnQgc2FucyB0YXJkZXIgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy48L3A+XCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IGdyYXR1aXQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuXFxuXFxuUG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbGUgc2l0ZSwgdm91cyBwb3V2ZXogc2FucyBhdHRlbmRyZSBzb3VzY3JpcmUgw6AgdW4gYWJvbm5lbWVudCA6XFxuTElOS19VUkxcIixcbiAgICBtYWlsRW5kRnJlZVRpbWVMaW5rVHh0IDogXCJNJ2Fib25uZXIuXCIsXG4gICAgbWFpbEVuZEZyZWVUaW1lTWVzc2FnZTogXCIgcmVsYW5jZXMgZW52b3nDqWVzLlwiLFxuICAgIG1haWxFbmRGcmVlVGltZVN1YmplY3Q6IFwiVm90cmUgYWJvbm5lbWVudCBncmF0dWl0IHZhIGV4cGlyZXJcIixcbiAgICBtYWlsRXhwaXJhdGlvbkJvZHlIVE1MOiBcIjxoMz5Cb25qb3VyIFVTRVJfTkFNRSw8L2gzPjxwPlZvdHJlIGFib25uZW1lbnQgw6AgU0lURV9OQU1FIHZhIGV4cGlyZXIgZCdpY2kgcXVlbHF1ZXMgam91cnMuPGJyPjxicj5Qb3VyIGNvbnRpbnVlciDDoCB1dGlsaXNlciBTSVRFX05BTUUsIHZvdXMgcG91dmV6IGxlIHByb2xvbmdlciBkw6hzIGF1am91cmQnaHVpIGVuIGNsaXF1YW50IHN1ciBsZSBsaWVuIGNpLWRlc3NvdXMuPC9wPlwiLFxuICAgIG1haWxFeHBpcmF0aW9uQm9keVR4dDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb3RyZSBhYm9ubmVtZW50IMOgIFNJVEVfTkFNRSB2YSBleHBpcmVyIGQnaWNpIHF1ZWxxdWVzIGpvdXJzLlxcblxcblBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIFNJVEVfTkFNRSwgdm91cyBwb3V2ZXogbGUgcHJvbG9uZ2VyIGTDqHMgYXVqb3VyZCdodWkgOlxcbkxJTktfVVJMXCIsXG4gICAgbWFpbEV4cGlyYXRpb25MaW5rVHh0IDogXCJQcm9sb25nZXIgbW9uIGFib25uZW1lbnQuXCIsXG4gICAgbWFpbEV4cGlyYXRpb25NZXNzYWdlOiBcIkZJUlNUIHByZW1pw6hyZXMgZXQgU0VDT05EIGRldXhpw6htZXMgcmVsYW5jZXMgZW52b3nDqWVzIHBvdXIgZGVzIGFib25uZW1lbnRzIGV4cGlyYW50IGQnaWNpIHBldS5cIixcbiAgICBtYWlsRXhwaXJhdGlvblJlbGF1bmNoVHh0OiBcIltSYXBwZWxdIFwiLFxuICAgIG1haWxFeHBpcmF0aW9uU3ViamVjdDogXCJWb3RyZSBhYm9ubmVtZW50IHZhIGJpZW50w7R0IGV4cGlyZXJcIixcbiAgICBtYWlsTmV3RWxlbWVudEZvckdyb3VwVHh0IDogXCJCb25qb3VyIFVTRVJfTkFNRSxcXG5cXG5Wb2ljaSBsZSBsaWVuIHZlcnMgbGUgbm91dmVsIGFydGljbGUgw6AgbGlyZSA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxOZXdRdWVzdGlvbm5haXJlQm9keVR4dCA6IFwiQm9uam91ciBVU0VSX05BTUUsXFxuXFxuVm9pY2kgbGUgbGllbiB2ZXJzIGxlIG5vdXZlYXUgcXVpeiA6XFxuXFxuUVVFU1RJT05OQUlSRV9VUkxcXG5cXG5Cb25uZSBsZWN0dXJlICFcXG5cXG5TdG9wcGVyIGxlcyBlbnZvaXMgP1xcblVOU1VCU0NSSUJFX1VSTFwiLFxuICAgIG1haWxTdG9wTWFpbExpbmtUeHQgOiBcIlN0b3BwZXIgbGVzIGVudm9pcy5cIixcbiAgICBuZWVkS25vd0lmTm90aWNlT2sgOiBcIklsIG1hbnF1ZSBsJ2luZm9ybWF0aW9uIHN1ciBsJ2FjY2VwdGF0aW9uIG91IG5vbiBkZSByZWNldm9pciBkZXMgbm90aWZpY2F0aW9ucy5cIixcbiAgICBuZWVkSW50ZWdlck51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBkb2l0IMOqdHJlIHVuIG5vbWJyZSBlbnRpZXIuXCIsXG4gICAgbmVlZE1pbk51bWJlck9mRGF5cyA6IFwiTGUgbm9tYnJlIGRlIGpvdXJzIGRlIGwnYWJvbm5lbWVudCBuZSBwZXV0IMOqdHJlIG7DqWdhdGlmICFcIixcbiAgICBuZWVkTm90VG9vTG9uZ0RheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQgKHRyb3AgbG9uZ3VlKS5cIixcbiAgICBuZWVkTnVtYmVyT2ZEYXlzIDogXCJJbCBmYXV0IHVuIG5vbWJyZSBkZSBqb3VycyBwb3VyIGwnYWJvbm5lbWVudC5cIixcbiAgICBuZWVkVW5pcXVlRGF5c0xpc3QgOiBcIkxhIGxpc3RlIGRlIGpvdXJzIHPDqWxlY3Rpb25uw6lzIG4nYSBwYXMgbGUgYm9uIGZvcm1hdC4gRG91YmxvbiA6IFwiLFxuICAgIG5lZWRWYWxpZERheXNMaXN0IDogXCJMYSBsaXN0ZSBkZSBqb3VycyBzw6lsZWN0aW9ubsOpcyBuJ2EgcGFzIGxlIGJvbiBmb3JtYXQuIENhcmFjdMOocmUgbm9uIHZhbGlkZSA6IFwiLFxuICAgIG5vTmV3UXVlc3Rpb25uYWlyZUZvclVzZXIgOiBcIkF1Y3VuIG5vdXZlYXUgcXVlc3Rpb25uYWlyZSB0cm91dsOpIHBvdXIgdW4gYWJvbm7DqSA6IFwiLFxuICAgIHVuc3Vic2NyaXB0aW9uT2sgOiBcIlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIHByaXNlIGVuIGNvbXB0ZS4gVm91cyBuZSByZWNldnJleiBwbHVzIGRlIG1lc3NhZ2VzIHZlbmFudCBkdSBzaXRlLCBzYXVmIHBvdXIgdm91cyBzaWduYWxlciBsYSBmaW4gZGUgdm90cmUgYWJvbm5lbWVudC48YnI+Tidow6lzaXRleiBwYXMgPGEgaHJlZj0nLyNVUkwnPsOgIGFjY8OpZGVyIMOgIHZvdHJlIGNvbXB0ZTwvYT4gcG91ciBkZSBub3V2ZWF1IGF1dG9yaXNlciBjZXJ0YWlucyBlbnZvaXMuXCIsXG4gICAgdW5zdWJzY3JpcHRpb25GYWlsIDogXCJTaSB2b3VzIHZveWV6IGNlIG1lc3NhZ2UsIGMnZXN0IHF1ZSB2b3RyZSBsaWVuIGRlIGTDqXNhYm9ubmVtZW50IG5lIGZvbmN0aW9ubmUgcGFzLjxicj5Wb3VzIHBvdXZleiA8YSBocmVmPScvI1VSTCc+YWNjw6lkZXIgw6Agdm90cmUgY29tcHRlPC9hPiBwb3VyIGTDqXNhY3RpdmVyIGxlcyBlbnZvaXMgbWFudWVsbGVtZW50LlwiXG59O1xuIiwiLy8gUXVlbHF1ZXMgZm9uY3Rpb25zIHV0aWxlcyBwb3VyIGxlcyBjaGHDrm5lc1xuXG5jbGFzcyBUb29sXG57XG4gICAgc3RhdGljIGlzRW1wdHkobXlWYXIpXG4gICAge1xuICAgICAgICBpZihteVZhcj09PXVuZGVmaW5lZCB8fCBteVZhcj09PW51bGwpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBteVZhcis9XCJcIjsvLyBzaSBhdXRyZSBjaG9zZSBxdSd1bmUgY2hhw65uZSBlbnZvecOpLi4uXG4gICAgICAgICAgICBteVZhcj1teVZhci50cmltKCk7XG4gICAgICAgICAgICBpZihteVZhcj09PVwiXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyB0cmltSWZOb3ROdWxsKG15U3RyaW5nKVxuICAgIHtcbiAgICAgICAgaWYoVG9vbC5pc0VtcHR5KG15U3RyaW5nKSlcbiAgICAgICAgICAgIG15U3RyaW5nPW51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbXlTdHJpbmcrPVwiXCI7Ly8gc2kgYXV0cmUgY2hvc2UgcXUndW5lIGNoYcOubmUgZW52b3nDqS4uLlxuICAgICAgICAgICAgbXlTdHJpbmc9bXlTdHJpbmcudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBteVN0cmluZztcbiAgICB9XG5cblxuICAgIHN0YXRpYyBzaG9ydGVuSWZMb25nZXJUaGFuKG15U3RyaW5nLCBtYXgpXG4gICAge1xuICAgICAgICBteVN0cmluZys9XCJcIjsvLyBhdSBjYXMgb8O5IGNlbGEgbmUgc2VyYWl0IHBhcyB1bmUgY2hhw65uZS4uLlxuICAgICAgIGlmKG15U3RyaW5nLmxlbmd0aCA+IG1heClcbiAgICAgICAgICAgIG15U3RyaW5nPW15U3RyaW5nLnN1YnN0cmluZygwLCAobWF4LTMpKStcIuKAplwiO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gc291cmNlIDogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU2MDQxNDAvcmVwbGFjZS1tdWx0aXBsZS1zdHJpbmdzLXdpdGgtbXVsdGlwbGUtb3RoZXItc3RyaW5nc1xuICAgIHN0YXRpYyByZXBsYWNlQWxsKG15U3RyaW5nLCBtYXBPYmopXG4gICAge1xuICAgICAgICBjb25zdCByZXBsYWNlRWx0cyA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMobWFwT2JqKS5qb2luKFwifFwiKSxcImdpXCIpO1xuICAgICAgICByZXR1cm4gbXlTdHJpbmcucmVwbGFjZShyZXBsYWNlRWx0cywgKG1hdGNoZWQpID0+XG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBPYmpbbWF0Y2hlZF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNvdXJjZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09iamV0c19nbG9iYXV4L01hdGgvcmFuZG9tXG4gICAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heClcbiAgICB7XG4gICAgICAgIG1pbiA9IE1hdGguY2VpbChtaW4pO1xuICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgLy8gw6AgY29tcGzDqXRlciA6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdGVfZm9ybWF0X2J5X2NvdW50cnlcbiAgICBzdGF0aWMgZGF0ZUZvcm1hdChkYXRlU3RyaW5nLCBsYW5nPVwiZnJcIilcbiAgICB7XG4gICAgICAgIGlmKFRvb2wuaXNFbXB0eShkYXRlU3RyaW5nKSlcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBsZXQgbXlEYXRlPW5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgICBsZXQgbXlEYXk9bXlEYXRlLmdldERhdGUoKStcIlwiO1xuICAgICAgICBpZihteURheS5sZW5ndGg9PT0xKVxuICAgICAgICAgICAgbXlEYXk9XCIwXCIrbXlEYXk7XG4gICAgICAgIGxldCBteU1vdW50aD0obXlEYXRlLmdldE1vbnRoKCkrMSkrXCJcIjtcbiAgICAgICAgaWYobXlNb3VudGgubGVuZ3RoPT09MSlcbiAgICAgICAgICAgIG15TW91bnRoPVwiMFwiK215TW91bnRoO1xuICAgICAgICBsZXQgbXlZZWFyPW15RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBpZihsYW5nPT09XCJmclwiKVxuICAgICAgICAgICAgcmV0dXJuIG15RGF5K1wiL1wiK215TW91bnRoK1wiL1wiK215WWVhcjtcbiAgICAgICAgZWxzZSBpZiAobGFuZz09PVwiZm9ybVwiKS8vIDIwMTQtMDItMDlcbiAgICAgICAgICAgIHJldHVybiBteVllYXIrXCItXCIrbXlNb3VudGgrXCItXCIrbXlEYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBteU1vdW50aCtcIi9cIitteURheStcIi9cIitteVllYXI7XG4gICAgfVxuXG4gICAgLy8gT24gZW5sw6h2ZSB2b2xvbnRhaXJlbWVudCBsZXMgMC9PIHBvdXIgw6l2aXRlciBsZXMgY29uZnVzaW9ucyAhXG4gICAgLy8gRXQgbWlldXggdmF1dCBhdXNzaSBkw6lidXRlciBldCBmaW5pciBwYXIgdW5lIGxldHRyZSBzaW1wbGUuXG4gICAgc3RhdGljIGdldFBhc3N3b3JkIChuYkNhck1pbiwgbmJDYXJNYXgpXG4gICAge1xuICAgICAgICBjb25zdCBuYkNhcj1uYkNhck1pbitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKG5iQ2FyTWF4LW5iQ2FyTWluKSk7XG4gICAgICAgIGNvbnN0IGxldHRlcnM9XCJBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5elwiO1xuICAgICAgICBjb25zdCBvdGhlcnM9XCIxMjM0NTY3ODkhPy4qLV8lQCbDicOAw4jDmeKCrCTDgsOKw5vDjlwiO1xuICAgICAgICBsZXQgcGFzc3dvcmQ9bGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbGV0dGVycy5sZW5ndGgpXTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTwobmJDYXItMSk7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZigoaSAlIDIpID09PTEpXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQrPW90aGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqb3RoZXJzLmxlbmd0aCldO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldOyAgIFxuICAgICAgICB9XG4gICAgICAgIHBhc3N3b3JkKz1sZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpsZXR0ZXJzLmxlbmd0aCldO1xuICAgICAgICByZXR1cm4gcGFzc3dvcmQ7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvb2w7IiwidmFyIG1hcCA9IHtcblx0XCIuL2RlZmF1bHQvY29uZmlnL2ZyLmpzXCI6IFwiLi4vdmlld3MvZGVmYXVsdC9jb25maWcvZnIuanNcIixcblx0XCIuL3dpa2lsZXJuaS9jb25maWcvZnIuanNcIjogXCIuLi92aWV3cy93aWtpbGVybmkvY29uZmlnL2ZyLmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4uL3ZpZXdzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLipcXFxcLmpzJFwiOyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICBoZWFkTGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJBY2N1ZWlsXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1vbiBjb21wdGVcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nvbm5leGlvbi5odG1sXCIsIGlkOiBcImFjY291bnRIZWFkTGlua1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiw4AgcHJvcG9zXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9hLXByb3Bvcy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDb250YWN0XCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jb250YWN0Lmh0bWxcIiB9IH0sXG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJDcsOpZGl0c1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY3JlZGl0cy5odG1sXCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJNZW50aW9ucyBsw6lnYWxlc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvbWVudGlvbnMtbGVnYWxlcy5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiRG9ubsOpZXMgcGVyc29ubmVsbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9kb25uZWVzLmh0bWxcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkMuRy5VLlwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY2d1Lmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJDLkcuVi5cIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Nndi5odG1sXCIsIHJlbDogXCJub2ZvbGxvd1wiIH0gfSxcbiAgICBdLFxuICAgIG1heFF1ZXN0aW9ubmFpcmVzQnlQYWdlOiAxMCxcbiAgICB1c2VySG9tZVBhZ2UgOiBcImFjY3VlaWwuaHRtbFwiLFxuICAgIGFkbWluSG9tZVBhZ2UgOiBcImFkbWluLmh0bWxcIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIHN1YnNjcmliZVBhZ2UgOiBcImluc2NyaXB0aW9uLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIHF1ZXN0aW9ubmFpcmVzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi1xdWl6cy5odG1sXCIsXG4gICAgdXNlcnNNYW5hZ2VtZW50UGFnZTogXCJnZXN0aW9uLXV0aWxpc2F0ZXVycy5odG1sXCIsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDEwLFxuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICBzaXRlU2xvZ2FuOiBcIkN1bHRpdm9ucyBub3RyZSBqYXJkaW4gIVwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiQXZlYyBXaWtpTGVybmkgdm91cyBhcHByZW5leiBjaGFxdWUgam91ciBkZSBub3V2ZWxsZXMgY2hvc2VzLjxicj5EZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBzb250IHPDqWxlY3Rpb25uw6lzIHBvdXIgdm91cyBldCBzb250IHN1aXZpcyBkJ3VuIHF1aXogdm91cyBwZXJtZXR0YW50IGRlIHRlc3RlciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudS48YnI+RGUgam91ciBlbiBqb3VyIGRlIG5vdXZlbGxlcyBncmFpbmVzIGRlIHNhdm9pciBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBcXFwiamFyZGluXFxcIi5cIixcbiAgICBob21lVGl0bGUyOiBcIkxhIGN1bHR1cmUgZW4gbGliZXJ0w6lcIixcbiAgICBob21lUDI6IFwiVG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSAoKiksIGxlIGxvZ2ljaWVsIGV0IGxlIGNvbnRlbnUgcGFydGFnw6kgc3VyIFdpa2lMZXJuaSBzb250IGxpYnJlcy48YnI+Vm91cyBwb3V2ZXogbGVzIHV0aWxpc2VyLCBsZXMgbW9kaWZpZXIgZXQgbGVzIGRpZmZ1c2VyIHNlbG9uIHZvdHJlIHNvdWhhaXQuPGJyPlN1ciBXaWtpTGVybmksIHBhcyBkZSBwdWJsaWNpdMOpLCBuaSBkZSBjb21tZXJjaWFsaXNhdGlvbiBkZSB2b3MgZG9ubsOpZXMgcGVyc29ubmVsbGVzLjxicj5Wb3VzIHBvdXZleiB2ZW5pciB5IFxcXCJjdWx0aXZlciB2b3RyZSBqYXJkaW5cXFwiIGVuIHRvdXRlIHRyYW5xdWlsbGl0w6kuPGJyPjxicj48c21hbGw+PGVtPigqKSBCaWVuIHF1ZSBwYXJ0YWdlYW50IHNlcyB2YWxldXJzLCBXaWtpTGVybmkgZXN0IHVuIHByb2pldCBpbmTDqXBlbmRhbnQgZGUgbGEgZm9uZGF0aW9uIFdpa2lww6lkaWEuPC9lbT48L3NtYWxsPlwiLFxuICAgIG5ld1F1ZXN0aW9ubmFpcmVzVGl0bGU6IFwiTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzIHN1ciBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIkxpc3RlIGRlcyBkZXJuaWVycyBxdWl6cyBwdWJsacOpcyBzdXIgV2lraUxlcm5pLlwiLFxuICAgIGV4cGxhbmF0aW9uVGl0bGU6IFwiVm91cyBkw6ljb3V2cmV6IFdpa2lMZXJuaSA/XCIsXG4gICAgZXhwbGFuYXRpb25UeHQ6IFwiTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6IHZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGwnYXJ0aWNsZSBXaWtpcMOpZGlhIGRvbnQgbGUgbGllbiB2b3VzIGVzdCBwcm9wb3PDqS48YnI+UHVpcyB2b3VzIGFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZS4gVm91cyBvYnRlbmV6IGFsb3JzIHZvdHJlIHLDqXN1bHRhdCBpbW3DqWRpYXRlbWVudC48YnI+PGJyPlRvdXRlcyBsZXMgcsOpcG9uc2VzIHNlIHRyb3V2ZW50IGRhbnMgbCdhcnRpY2xlIHByb3Bvc8OpIMOgIGxhIGxlY3R1cmUuIDxiPlZvdXMgw6p0ZXMgaWNpIHBvdXIgYXBwcmVuZHJlIGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+LCBtYWlzIGxpYnJlIMOgIHZvdXMgZCdlc3NheWVyIGQneSByw6lwb25kcmUgaW1tw6lkaWF0ZW1lbnQuPGJyPjxicj5RdWFuZCBsZSBzdWpldCBzJ3kgcHLDqnRlLCBuZSB2b3VzIMOpdG9ubmV6IHBhcyBzaSBjZXJ0YWluZXMgZGVzIHLDqXBvbnNlcyBwcm9wb3PDqWVzIHBldXZlbnQgw6p0cmUgdW4gcGV1IGTDqWNhbMOpZXMsIGFic3VyZGVzLi4uIE9uIHBldXQgYXBwcmVuZHJlIGF2ZWMgbGUgc291cmlyZSwgbm9uID8gOi0pPGJyPjxicj5VbmUgZm9pcyB2b3RyZSByw6lzdWx0YXQgb2J0ZW51LCBpbCB2b3VzIHNlcmEgcHJvcG9zw6kgZGUgY3LDqWVyIHVuIGNvbXB0ZSBwb3VyIGxlIHNhdXZlZ2FyZGVyLjxicj5DZSBjb21wdGUgdm91cyBwZXJtZXR0cmEgZGUgdGVzdGVyIGRlIG5vdXZlYXUgY2UgcXVpeiBwb3VyIHbDqXJpZmllciBjZSBxdWUgdm91cyBlbiBhdmV6IHJldGVudSBwbHVzaWV1cnMgam91cnMsIHNlbWFpbmVzLCBtb2lzLi4uIEV0IGRlIHJlY2V2b2lyIHLDqWd1bGnDqHJlbWVudCBkZSBub3V2ZWxsZXMgc3VnZ2VzdGlvbnMgZGUgbGVjdHVyZXMuPGJyPjxicj5NYWlzIDxiPmxhIGNyw6lhdGlvbiBkZSBjZSBjb21wdGUgZXN0IGZhY3VsdGF0aXZlPC9iPiBldCA8YSBocmVmPScvcXVpenMvJyB0aXRsZT0nTGVzIGRlcm5pZXJzIHF1aXpzIHB1Ymxpw6lzJz52b3VzIHBvdXZleiBwYXJjb3VyaXIgV2lraUxlcm5pIGxpYnJlbWVudDwvYT4uXCIsXG4gICAgbm9KU05vdGlmaWNhdGlvbjogXCJEw6lzb2zDqSwgbWFpcyBwb3VyIGwnaW5zdGFudCwgbCd1dGlsaXNhdGlvbiBkZSBXaWtpTGVybmkgbsOpY2Vzc2l0ZSBsJ2FjdGl2YXRpb24gZHUgSmF2YVNjcmlwdC5cIixcbiAgICB0YWdzTGlzdFR4dDogXCJQYXJjb3VyaXIgbGVzIHJ1YnJpcXVlcyA6XCIsXG59OyIsIm1vZHVsZS5leHBvcnRzID1cbntcbiAgICAvLyBsaWVucyBkZSBsJ2ludGVyZmFjZVxuICAgIGhlYWRMaW5rczpcbiAgICBbXG4gICAgICAgIHsgYW5jaG9yOiBcIkNvbnRhY3RcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2NvbnRhY3QuaHRtbFwiLCByZWw6IFwibm9mb2xsb3dcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIlBhcmNvdXJpclwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvcXVpenMvXCIsIGlkOlwiaW5kZXhIZWFkTGlua1wiLCB0aXRsZTpcIkxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9uc1wiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiTW9uIGNvbXB0ZVwiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvY29ubmV4aW9uLmh0bWxcIiwgaWQ6IFwiYWNjb3VudEhlYWRMaW5rXCIsIHRpdGxlOlwiQWNjw6lkZXIgb3UgY3LDqWV6IHZvdHJlIGNvbXB0ZSBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIsOAIHByb3Bvc1wiLCBhdHRyaWJ1dGVzOiB7IGhyZWY6XCIvYS1wcm9wb3MuaHRtbFwiLCB0aXRsZTpcIkVuIHNhdm9pciArIHN1ciBXaWtpTGVybmlcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkFjY3VlaWxcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL1wiLCB0aXRsZTpcIlBhZ2UgZCdhY2N1ZWlsXCIgfSB9XG4gICAgXSxcbiAgICBmb290TGlua3M6XG4gICAgW1xuICAgICAgICB7IGFuY2hvcjogXCJCbG9nXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcImh0dHBzOi8vZnJhbWFzcGhlcmUub3JnL3Blb3BsZS83ZTU0YjdhMGI1MzIwMTM4OWVlZjJhMDAwMDA1MzYyNVwiLCB0aXRsZTpcIkxlIGJsb2cgV2lraUxlcm5pIHN1ciBkaWFzcG9yYSpcIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIkNyw6lkaXRzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9jcmVkaXRzLmh0bWxcIiwgdGl0bGU6XCJRdWkgYSBjcsOpw6kgV2lraUxlcm5pID8gUXVlbHMgc29udCB2b3MgZHJvaXRzID9cIiB9IH0sXG4gICAgICAgIHsgYW5jaG9yOiBcIk1lbnRpb25zIGzDqWdhbGVzXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9tZW50aW9ucy1sZWdhbGVzLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9LFxuICAgICAgICB7IGFuY2hvcjogXCJEb25uw6llcyBwZXJzb25uZWxsZXNcIiwgYXR0cmlidXRlczogeyBocmVmOlwiL2Rvbm5lZXMuaHRtbFwiLCB0aXRsZTpcIlZvcyBkb25uw6llcyBwZXJzb25uZWxsZXMgc3VyIFdpa2lMZXJuaVwiIH0gfSxcbiAgICAgICAgeyBhbmNob3I6IFwiQ0dWICYgQ0dVXCIsIGF0dHJpYnV0ZXM6IHsgaHJlZjpcIi9DR1YtQ0dVLmh0bWxcIiwgcmVsOiBcIm5vZm9sbG93XCIgfSB9XG4gICAgXSxcbiAgICBhY2NvdW50UGFnZTogXCJjb21wdGUuaHRtbFwiLFxuICAgIGFib3V0UGFnZTogXCJhLXByb3Bvcy5odG1sXCIsXG4gICAgYWRtaW5Ib21lUGFnZTogXCJhZG1pbi5odG1sXCIsXG4gICAgY2d1UGFnZTogXCJDR1YtQ0dVLmh0bWxcIixcbiAgICBjb25uZWN0aW9uUGFnZSA6IFwiY29ubmV4aW9uLmh0bWxcIixcbiAgICBkZWxldGVMaW5rUGFnZSA6IFwiYXVyZXZvaXIuaHRtbD90PVwiLFxuICAgIGxvZ2luTGlua1BhZ2UgOiBcImxvZ2luLmh0bWw/dD1cIixcbiAgICBtYW5hZ2VySG9tZVBhZ2UgOiBcImdlc3Rpb24uaHRtbFwiLFxuICAgIG5ld0xvZ2luTGlua1BhZ2UgOiBcIm5ld2xvZ2luLmh0bWw/dD1cIixcbiAgICBxdWVzdGlvbm5haXJlc01hbmFnZW1lbnRQYWdlOiBcImdlc3Rpb24tcXVpenMuaHRtbFwiLCAgICBcbiAgICBzdG9wTWFpbFBhZ2UgOiBcInN0b3AtbWFpbC5odG1sP3Q9XCIsXG4gICAgc3Vic2NyaWJlUGFnZSA6IFwiaW5zY3JpcHRpb24uaHRtbFwiLFxuICAgIHVwZGF0ZUFjY291bnRQYWdlOiBcImNvbXB0ZS5odG1sXCIsXG4gICAgdXNlckhvbWVQYWdlIDogXCJhY2N1ZWlsLmh0bWxcIixcbiAgICB1c2VySG9tZVBhZ2VUeHQgOiBcIk1hIHBhZ2UgZCdhY2N1ZWlsLlwiLFxuICAgIHVzZXJzTWFuYWdlbWVudFBhZ2U6IFwiZ2VzdGlvbi11dGlsaXNhdGV1cnMuaHRtbFwiLFxuICAgIHZhbGlkYXRpb25MaW5rUGFnZSA6IFwidmFsaWRhdGlvbi5odG1sP3Q9XCIsXG4gICAgLyogVGV4dGVzIChnw6luw6lyYWwpICovXG4gICAgc2l0ZVNsb2dhbjogXCJDdWx0aXZvbnMgbm90cmUgamFyZGluICFcIixcbiAgICBub0pTTm90aWZpY2F0aW9uOiBcIkTDqXNvbMOpLCBtYWlzIHBvdXIgbCdpbnN0YW50LCBsJ3V0aWxpc2F0aW9uIGRlIFdpa2lMZXJuaSBuw6ljZXNzaXRlIGwnYWN0aXZhdGlvbiBkdSBKYXZhU2NyaXB0LlwiLFxuICAgIG1haWxSZWNpcGllbnRUeHQ6IFwiTWVzc2FnZSBlbnZvecOpIMOgIDpcIixcbiAgICBsaWNlbmNlVHh0OiBcIkBjb3B5bGVmdCBMZSBjb250ZW51IGRlIFdpa2lMZXJuaSA8YSBocmVmPVxcXCIvY3JlZGl0cy5odG1sXFxcIiB0aXRsZT1cXFwiRW4gc2F2b2lyIHBsdXMgP1xcXCI+ZXN0IGxpYnJlPC9hPiBldCB2b3VzIGVzdCBvZmZlcnQgc2FucyBwdWJsaWNpdMOpLiBWb3VzIHBvdXZleiA8YSBocmVmPVxcXCIvcGFydGljaXBlci1maW5hbmNlbWVudC5odG1sXFxcIiB0aXRsZT1cXFwiRmluYW5jZW1lbnQgcGFydGljaXBhdGlmIGF2ZWMgY29udHJlLXBhcnRpZXNcXFwiPnBhcnRpY2lwZXIgw6Agc29uIGZpbmFuY2VtZW50IGVuIGNsaXF1YW50IGljaTwvYT4uXCIsXG4gICAgLyogUGFnZSBkJ2FjY3VlaWwgKi9cbiAgICBob21lUGFnZVR4dDogXCJQYWdlIGQnYWNjdWVpbFwiLFxuICAgIGhvbWVUaXRsZTE6IFwiRGUgbmF0dXJlIGN1cmlldXNlID9cIixcbiAgICBob21lUDE6IFwiPGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+Ljxicj5Wb3VzIHJlY2V2ZXogZGUgY291cnRzIGFydGljbGVzLCBsaXNpYmxlcyBlbiBxdWVscXVlcyBtaW51dGVzLjxicj5EZXMgcXVpenMgdm91cyBwZXJtZXR0ZW50IGVuc3VpdGUgZGUgdGVzdGVyIGNlIHF1ZSB2b3VzIGF2ZXogcmV0ZW51Ljxicj5EZSBqb3VyIGVuIGpvdXIgPGI+ZGUgbm91dmVsbGVzIGdyYWluZXMgZGUgY3VsdHVyZSBzb250IGFpbnNpIHNlbcOpZXMgZGFucyB2b3RyZSBqYXJkaW48L2I+LlwiLFxuICAgIGhvbWVUaXRsZTI6IFwiTGEgY3VsdHVyZSBnw6luw6lyYWxlIGVuIGxpYmVydMOpXCIsXG4gICAgaG9tZVAyOiBcIjxiPlBhcyBkZSBmYWl0cyBhbHRlcm5hdGlmczwvYj4sIHRvdXMgbGVzIGNvbnRlbnVzIHNvbnQgPGI+c291cmPDqXMgcGFyIGRlcyBhcnRpY2xlcyBXaWtpcMOpZGlhPC9iPi48YnI+RXQgdG91dCBjb21tZSBzdXIgV2lraXDDqWRpYSwgbGUgbG9naWNpZWwgZXQgbGUgY29udGVudSBwdWJsacOpIHN1ciBXaWtpTGVybmkgPGEgaHJlZj1cXFwiL2NyZWRpdHMuaHRtbFxcXCIgdGl0bGU9XFxcIkVuIHNhdm9pciBwbHVzIHN1ciBjZSBzdWpldFxcXCI+c29udCBwYXJ0YWfDqXMgc291cyBsaWNlbmNlcyBsaWJyZXM8L2E+Ljxicj5MZSB0b3V0IHNhbnMgcHVibGljaXTDqSwgbmkgY29tbWVyY2lhbGlzYXRpb24gZGUgdm9zIGRvbm7DqWVzLjxicj48Yj5TdXIgV2lraUxlcm5pLCB2b3VzIGN1bHRpdmV6IHZvdHJlIGphcmRpbiBlbiB0b3V0ZSB0cmFucXVpbGxpdMOpLjwvYj5cIixcbiAgICBob21lQnRuQWJvdXRUeHQ6IFwiRW4gc2F2b2lyIHBsdXMgc3VyIFdpa2lMZXJuaSA/XCIsXG4gICAgaG9tZUJ0blN1YnNjcmliZVR4dDogIFwiVGVzdGV6IFdpa2lMZXJuaVwiLFxuICAgIGhvbWVTdWJjcmlwdGlvbkZvcm1UaXRsZTogIFwiUmVjZXZleiBsZXMgcHJvY2hhaW5zIGFydGljbGVzIFdpa2lMZXJuaVwiLFxuICAgIC8qIFBhZ2UgZGVybmnDqHJlcyBwdWJsaWNhdGlvbnMuLi4gKi8gICBcbiAgICBuZXdRdWVzdGlvbm5haXJlc1RpdGxlOiBcIkN1bHR1cmUgZ8OpbsOpcmFsZSAtIGFwcHJlbmV6IGRlIG5vdXZlbGxlcyBjaG9zZXMgYXZlYyBXaWtpTGVybmlcIixcbiAgICBuZXdRdWVzdGlvbm5haXJlc0ludHJvOiBcIldpa2lMZXJuaSA6IHRlc3RleiB2b3MgY29ubmFpc3NhbmNlcyBldCBhcHByZW5leiBkZSBub3V2ZWxsZXMgY2hvc2VzIGF2ZWMgV2lraUxlcm5pLlwiLFxuICAgIG5ld3NMaXN0VGl0bGU6IFwiPHA+PGI+QXZlYyBXaWtpTGVybmksIHZvdXMgYXBwcmVuZXogY2hhcXVlIGpvdXIgcXVlbHF1ZSBjaG9zZSBkZSBub3V2ZWF1PC9iPjxicj5TaSBkZXNzb3VzIGxlcyBkZXJuacOocmVzIHB1YmxpY2F0aW9ucy4gVm91cyBwb3V2ZXogYXVzc2kgPGEgaHJlZj0nL3F1aXpzL3RoZW1lcy5odG1sJz5wYXJjb3VyaXIgbGUgc2l0ZSBwYXIgdGjDqG1lcyBvdSBtb3RzLWNsw6lzPC9hPi48L3A+XCIsXG4gICAgLyogUGxhbiBkdSBzaXRlLCBsaXN0ZSBkZXMgdGFncyAqLyAgIFxuICAgIHRhZ0xpc3RUaXRsZTogXCJDdWx0dXJlIGfDqW7DqXJhbGUgLSBkZXMgYXJ0aWNsZXMgZXQgcXVpenMgc3VyIGRlIG5vbWJyZXV4IHRow6htZXMgIVwiLFxuICAgIHRhZ0xpc3RNZXRhRGVzYzogXCJXaWtpTGVybmkgOiBkw6ljb3V2cmlyIGxlcyBkaWZmw6lyZW50cyB0aMOobWVzIGFib3Jkw6lzIHBhciBXaWtpTGVybmkuIElueGV4IGR1IHNpdGUuXCIsXG4gICAgdGFnTGlzdEludHJvOiBcIjxoMz5BdmVjIFdpa2lMZXJuaSwgZGV2ZW5leiBmb3J0IGVuIHRow6htZXMuLi4gT3VpIG1haXMgcXVlbHMgdGjDqG1lcyA/IDopPC9oMz48YmxvY2txdW90ZT5BcmlzdG90ZeKArzogwqvigK9M4oCZaG9tbWUgYSBuYXR1cmVsbGVtZW50IGxhIHBhc3Npb24gZGUgY29ubmHDrnRyZeKApuKAr8K7PC9ibG9ja3F1b3RlPlwiLFxuICAgIC8qIFBhZ2UgcXVpenMgKi9cbiAgICBhbnN3ZXJzRXhwbGFuYXRpb25zTGlua1RleHQ6IFwiUmVsaXJlXCIsXG4gICAgcXVpekVsZW1lbnRMaW5rc0ludHJvOiBcIkVuIHNhdm9pciBwbHVzXCIsXG4gICAgcXVpekVsZW1lbnRTdWJjcmlwdGlvbkZvcm1UaXRsZTogXCJSZWNldmV6IGxlcyBwcm9jaGFpbnMgYXJ0aWNsZXMgV2lraUxlcm5pXCIsXG4gICAgZXhwbGFuYXRpb25UaXRsZTogXCJWb3VzIGTDqWNvdXZyZXogV2lraUxlcm5p4oCvP1wiLFxuICAgIGV4cGxhbmF0aW9uVHh0OiBcIjxwPkxlIHByaW5jaXBlIGVzdCBzaW1wbGXigK86IDxiPnZvdXMgY29tbWVuY2V6IHBhciBsaXJlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgZG9udCBsZSBsaWVuIHZvdXMgZXN0IHByb3Bvc8OpPC9iPi4gUHVpcyB2b3VzIDxiPmFmZmljaGVyIGxlIHF1aXogcG91ciB2w6lyaWZpZXIgY2UgcXVlIHZvdXMgYXZleiByZXRlbnUgZGUgdm90cmUgbGVjdHVyZTwvYj4uIFN1aXZhbnQgbGVzIHF1ZXN0aW9ucywgPGI+dW5lIG91IHBsdXNpZXVycyByw6lwb25zZXMgcGV1dmVudCDDqnRyZSBjb3JyZWN0ZXM8L2I+IGV0IGRvaXZlbnQgZG9uYyDDqnRyZSBjb2Now6llcy4gQ+KAmWVzdCB0b3Vqb3VycyA8Yj5sZSBjb250ZW51IGRlIGzigJlhcnRpY2xlIFdpa2lww6lkaWEgcXVpIGZhaXQgZm9pPC9iPiBjb25jZXJuYW50IGxlcyDCq+KAr2Jvbm5lc+KAr8K7IHLDqXBvbnNlcy4gQ+KAmWVzdCB1bmUgZmHDp29uIGRlIHRlc3RlciDDoCBsYSBmb2lzIHZvdHJlIGNhcGFjaXTDqSBk4oCZYXR0ZW50aW9uIGV0IHZvdHJlIG3DqW1vaXJlLiBMZXMgYXJ0aWNsZXMgZGUgV2lraXDDqWRpYSBwZXV2ZW50IMOpdm9sdWVyLCBkb25jIG7igJlow6lzaXRleiBwYXMgPGEgaHJlZj0nL2NvbnRhY3QuaHRtbCc+w6AgbWUgc2lnbmFsZXIgdW5lIGVycmV1cjwvYT4uPC9wPjxwPjxiPldpa2lMZXJuaSB2b3VzIHByb3Bvc2UgZOKAmWF1dHJlcyBzb2x1dGlvbnMgcG91ciBhbcOpbGlvcmVyIHZvdHJlIGN1bHR1cmUgZ8OpbsOpcmFsZTwvYj4uIFBvdXIgZW4gc2F2b2lyIHBsdXMsIGNsaXF1ZXogc3VyIGxlIGJvdXRvbiBjaS1kZXNzb3VzLjwvcD5cIixcbiAgICBleHBsYW5hdGlvbkVsZW1lbnRUeHQ6IFwiPHA+V2lraUxlcm5pIHZvdXMgcHJvcG9zZSBkZSA8Yj5yZWNldm9pciBwYXIgZS1tYWlsIMOgIGxhIGZyw6lxdWVuY2UgY2hvaXNpZSwgZGUgY291cnRzIGFydGljbGVzIGxpc2libGVzIGVuIHF1ZWxxdWVzIG1pbnV0ZXM8L2I+IGV0IHBvcnRhbnQgc3VyIGRlcyBzdWpldHMgdHLDqHMgdmFyacOpcyBkZSA8Yj5jdWx0dXJlIGfDqW7DqXJhbGU8L2I+IChhcnRzLCBoaXN0b2lyZSwgbGl0dMOpcmF0dXJlLCBzY2llbmNlcywgZXRjLikuPC9wPjxwPkNlcyBhcnRpY2xlcyBzb250IGJhc8OpcyBzdXIgPGI+dW5lIG91IHBsdXNpZXVycyBwYWdlcyBkZSBXaWtpcMOpZGlhPC9iPiAoZm91cm5pZXMgZW4gbGllbiksIGRvbnQgPGI+aWxzIGV4dHJhaWVudCBjZXJ0YWluZXMgaW5mb3JtYXRpb25zPC9iPi48L3A+PHA+Q2hhcXVlIHPDqXJpZSBk4oCZYXJ0aWNsZXMgZXN0IDxiPnN1aXZpZSBk4oCZdW4gcXVpejwvYj4gcGVybWV0dGFudCBkZSB0ZXN0ZXIgY2UgcXVlIHZvdXMgZW4gYXZleiByZXRlbnUuPC9wPjxwPjxiPlZvdXMgYXBwcmVuZXogYWluc2kgcsOpZ3VsacOocmVtZW50IGRlIG5vdXZlbGxlcyBjaG9zZXM8L2I+IHRyw6hzIHNpbXBsZW1lbnQuPC9wPlwiLFxuICAgIC8qIEF1dHJlcyAqL1xuICAgIGlsbHVzdHJhdGlvbkRpciA6IFwiL2ltZy9xdWl6cy9cIixcbiAgICB0d2l0dGVyQWNjb3VudDogXCJXaWtpTGVybmlcIixcbiAgICBtYXhRdWVzdGlvbm5haXJlc0J5UGFnZTogMTIsXG4gICAgbWF4UXVlc3Rpb25uYWlyZXNTaXRlSG9tZVBhZ2U6IDMsXG4gICAgbmJRdWVzdGlvbm5haXJlc1VzZXJIb21lUGFnZSA6IDMsXG59OyIsIi8vIEZPTkNUSU9OUyBVVElMRVMgQVUgU1RPQ0tBR0UgTE9DQUwgKFNFU1NJT04sIENPT0tJRVMsIElOREVYREIsIEVUQy4pXG4vLyBSZXZlbmlyIHBvdXIgZ8OpcmVyIGxlIGNhcyBvw7kgbG9jYWwuc3RvcmFnZSBuJ2VzdCBwYXMgY29ubnUgcG91ciB1dGlsaXNlciBjb29raWVcbiAgICBcbmV4cG9ydCBjb25zdCBzYXZlTG9jYWx5ID0gKG5hbWUsIGRhdGEpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWx5ID0gKG5hbWUsIGpzb249ZmFsc2UpID0+XG57XG4gICAgaWYoanNvbilcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlTG9jYWx5ID0gKG5hbWUpID0+XG57XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG59IiwiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi90b29scy9tYWluXCI7XG5cbi8vIEZvbmN0aW9uIGFzc29jaWFudCBsZXMgYXR0cmlidXRzIGZvdXJuaXMgw6AgdW4gY2hhbXAgZGUgZm9ybXVsYWlyZVxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnQgPSAoZWx0UGFyZW50LCBlbHRUeXBlLCBlbHRDb250ZW50PVwiXCIsIGVsdElkPVwiXCIsIGVsdENsYXNzPVtdLCBlbHRBdHRyaWJ1dGVzPXt9LCByZXBsYWNlPXRydWUpID0+XG57XG4gICAgaWYoaXNFbXB0eShlbHRUeXBlKSB8fCBpc0VtcHR5KGVsdFBhcmVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBlbHNlXG4gICAge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWx0VHlwZSk7XG4gICAgICAgIFxuICAgICAgICBpZighaXNFbXB0eShlbHRJZCkpLy8gdGVzdGVyIHNpIGwnaWQgbidlc3QgcGFzIGTDqWrDoCB1dGlsaXPDqSBkYW5zIGxlIERPTSA/XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlkPWVsdElkO1xuXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkoZWx0Q2xhc3MpICYmIGVsdENsYXNzLmxlbmd0aCE9MClcbiAgICAgICAge1xuICAgICAgICAgICAgZm9yKGxldCBpIGluIGVsdENsYXNzKVxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChlbHRDbGFzc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0eXBlb2YgZWx0QXR0cmlidXRlcyA9PT0gXCJvYmplY3RcIikgLy8gISEgdG91cyBsZXMgb2JqZXRzIG5lIHNvbnQgcGFzIG9rXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcihsZXQgYXR0cmlidXROYW1lIGluIGVsdEF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXROYW1lLCBlbHRBdHRyaWJ1dGVzW2F0dHJpYnV0TmFtZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWlzRW1wdHkoZWx0Q29udGVudCkpXG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTD1lbHRDb250ZW50LnJlcGxhY2UoL1xcbi9nLFwiPGJyPlwiKTsvLyBpbm5lckhUTUwgcGVybWV0IGQnYWpvdXRlciBkdSB0ZXh0ZSBheWFudCBsdWktbcOqbWUgZGVzIGJhbGlzZXMsIGV0Yy5cbiAgICAgICAgICAgIFxuICAgICAgICBpZihyZXBsYWNlKVxuICAgICAgICAgICAgZWx0UGFyZW50LmlubmVySFRNTD1cIlwiO1xuICAgICAgICBlbHRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7XG4gICAgfSAgICBcbn0iLCIvLyBDZSBzY3JpcHQgZm91cm5pdCBkZXMgZm9uY3Rpb25zIHV0aWxpc8OpZXMgc3VyIHRvdXRlcyBsZXMgcGFnZXMgZHUgc2l0ZVxuXG5leHBvcnQgY29uc3QgaGVsbG9EZXYgPSAoKSA9Plxue1xuICAgIGNvbnNvbGUubG9nKFwiKioqKiBIZWxsbyBhbWkgZMOpdmVsb3BwZXVyIDotKVxcblxcbkxlIGNvZGUgZGUgV2lraUxlcm5pIGVzdCBsaWJyZSBldCB2b3VzIHBvdXZleiBsZSB0cm91dmVyIMOgIGNldHRlIGFkcmVzc2UgOlxcbmh0dHBzOi8vZm9yZ2UuY2hhcHJpbC5vcmcvRmFiX0JsYWIvV2lraUxlcm5pXFxuXFxuUG91ciBsZXMgc3VnZ2VzdGlvbnMgZCdhbcOpbGlvcmF0aW9uIG91IHF1ZXN0aW9ucyA6IGRldkB3aWxpbGVybmkuY29tICoqKipcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2NvdW50TGluayA9IChzdGF0dXMsIGNvbmZpZ1RlbXBsYXRlKSA9Plxue1xuICAgIGNvbnN0IGxpbms9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhY2NvdW50SGVhZExpbmtcIik7XG4gICAgY29uc3QgaG9tZVBhZ2U9c3RhdHVzK1wiSG9tZVBhZ2VcIjtcbiAgICBsaW5rLmhyZWY9XCIvXCIrY29uZmlnVGVtcGxhdGVbaG9tZVBhZ2VdO1xufSIsImltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvbWFpblwiO1xuXG4vLyBGb25jdGlvbiByw6ljdXDDqXJhbnQgbGVzIHBhcmFtw6h0cmVzIHBhc3PDqXMgcGFyIGwndXJsXG5leHBvcnQgY29uc3QgZ2V0VXJsUGFyYW1zID0gKCkgPT5cbntcbiAgICBpZihpc0VtcHR5KGxvY2F0aW9uLnNlYXJjaCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLnNwbGl0KFwiJlwiKTtcbiAgICBpZighQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSB8fCBwYXJhbWV0ZXJzLmxlbmd0aD09PTApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgXG4gICAgbGV0IHBhcmFtLCBkYXRhcz17fTtcbiAgICBmb3IobGV0IGkgaW4gcGFyYW1ldGVycylcbiAgICB7XG4gICAgICAgIHBhcmFtID0gcGFyYW1ldGVyc1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmKHBhcmFtLmxlbmd0aD09PTIpXG4gICAgICAgICAgICBkYXRhc1twYXJhbVswXV09ZGVjb2RlVVJJKHBhcmFtWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufSIsImltcG9ydCB7IGFwaVVybCwgYXZhaWxhYmxlTGFuZ3MsIHNpdGVVcmwsIHRoZW1lIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9pbnN0YW5jZS5qc1wiO1xuY29uc3QgbGFuZz1hdmFpbGFibGVMYW5nc1swXTtcblxuY29uc3QgY29uZmlnVGVtcGxhdGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdmlld3MvXCIrdGhlbWUrXCIvY29uZmlnL1wiK2xhbmcrXCIuanNcIik7XG5cbmltcG9ydCB7ICBjaGVja0xvZ2luUm91dGUsIHRpbWVEaWZmZXJlbmNlTWF4LCB0aW1lRGlmZmVyZW5jZU1pbiwgdXNlclJvdXRlcyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvdXNlcnMuanNcIjtcblxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uLy4uL3Rvb2xzL21haW5cIjtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVEaWZmZXJlbmNlID0gKCkgPT5cbntcbiAgICAvLyBtdWx0aXBsaWVyIHBhciAtMSwgY2FyIGMnZXN0IGNlIHF1J2lsIGZhdXQgXCJham91dGVyXCIgw6AgbCdoZXVyZSBVVEMgcG91ciByZXZlbmlyIGVuIGhldXJlIGxvY2FsZSBxdWkgbSdpbnTDqXJlc3NlIGV0IG5vbiBsJ2ludmVyc2VcbiAgICBjb25zdCB0aW1lTG9jYWw9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKi0xO1xuICAgIGlmKHRpbWVMb2NhbCA+IHRpbWVEaWZmZXJlbmNlTWF4IHx8IHRpbWVMb2NhbCA8IHRpbWVEaWZmZXJlbmNlTWluKVxuICAgICAgICByZXR1cm4gMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aW1lTG9jYWw7XG59XG5cbi8vIEondXRpbGlzZSBsZSBzdG9ja2FnZSBsb2NhbCBkdSBuYXZpZ2F0ZXVyIHBvdXIgZW5yZWdpc3RyZXIgbGVzIGRvbm7DqWVzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIGwndXRpbGlzYXRldXIgcGFyIGxhIHN1aXRlXG4vLyBTZXVsIGxlIHNlcnZldXIgcG91cnJhIHbDqXJpZmllciBxdWUgbGVzIGlkZW50aWZpYW50cyBzb250ICh0b3Vqb3VycykgdmFsaWRlcy5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHVzZXJJZCwgdG9rZW4sIGR1cmF0aW9uVFMpID0+XG57XG4gICAgY29uc3Qgc3RvcmFnZVVzZXI9XG4gICAge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblRTXG4gICAgfVxuICAgIHNhdmVMb2NhbHkoXCJ1c2VyXCIsIHN0b3JhZ2VVc2VyKTtcbn1cblxuLy8gVsOpcmlmaWUgcXUnaWwgeSBhIGRlcyBkb25uw6llcyBsb2NhbGVzIGNvbmNlcm5hbnQgbGUgcsOpc3VsdGF0IGQndW4gcXVpeiBvdSBkJ3VuIGdyb3VwZSBkZSBxdWl6c1xuLy8gRXQgbGVzIGFqb3V0ZSBhdXggZG9ubsOpZXMgZW52b3nDqWVzIHBhciBsZXMgZm9ybXVsYWlyZXMgZCdpbnNjcmlwdGlvbi9jb25uZXhpb24gc2kgYydlc3QgbGUgY2FzXG5leHBvcnQgY29uc3QgY2hlY2tBbnN3ZXJEYXRhcyA9IChkYXRhcykgPT5cbntcbiAgICBjb25zdCBsYXN0QW5zd2VyPWdldExvY2FseShcImxhc3RBbnN3ZXJcIik7XG4gICAgaWYoIWlzRW1wdHkobGFzdEFuc3dlcikpXG4gICAge1xuICAgICAgICBjb25zdCBhbnN3ZXI9SlNPTi5wYXJzZShsYXN0QW5zd2VyKTtcbiAgICAgICAgaWYoIWlzRW1wdHkoYW5zd2VyLmR1cmF0aW9uKSAmJiAhaXNFbXB0eShhbnN3ZXIubmJDb3JyZWN0QW5zd2VycykgJiYgIWlzRW1wdHkoYW5zd2VyLm5iUXVlc3Rpb25zKSAmJiAoIWlzRW1wdHkoYW5zd2VyLlF1ZXN0aW9ubmFpcmVJZCkgfHwgIWlzRW1wdHkoYW5zd2VyLkdyb3VwSWQpKSlcbiAgICAgICAge1xuICAgICAgICAgICAgZGF0YXMuZHVyYXRpb249YW5zd2VyLmR1cmF0aW9uO1xuICAgICAgICAgICAgZGF0YXMubmJDb3JyZWN0QW5zd2Vycz1hbnN3ZXIubmJDb3JyZWN0QW5zd2VycztcbiAgICAgICAgICAgIGRhdGFzLm5iUXVlc3Rpb25zPWFuc3dlci5uYlF1ZXN0aW9ucztcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGFuc3dlci5RdWVzdGlvbm5haXJlSWQpKVxuICAgICAgICAgICAgICAgIGRhdGFzLlF1ZXN0aW9ubmFpcmVJZD1hbnN3ZXIuUXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFzLkdyb3VwSWQ9YW5zd2VyLkdyb3VwSWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzO1xufVxuXG4vLyBDZXR0ZSBmb25jdGlvbiB0ZXN0ZSBsYSBjb25uZXhpb24gZGUgbCd1dGlsaXNhdGV1ciBkJ3VuZSBwYWdlXG4vLyBPbiBwZXV0IGZvdXJuaXMgdW5lIGxpc3RlIGRlIHN0YXR1dHMgYWNjZXB0w6lzIChzaSB2aWRlID0gdG91cyksIGFpbnNpIHF1J3VuZSB1cmwgZGUgcmVkaXJlY3Rpb24gc2kgbm9uIGNvbm5lY3TDqSwgdW4gbWVzc2FnZSBkJ2VycmV1ciDDoCBhZmZpY2hlciBzdXIgbGEgcGFnZSBkZSBkZXN0aW5hdGlvbiBldCBsJ3VybCBzdXIgbGFxdWVsbGUgcmV2ZW5pciB1bmUgZm9pcyBjb25uZWN0w6lcbmV4cG9ydCBjb25zdCBjaGVja1Nlc3Npb24gPSBhc3luYyAoc3RhdHVzPVtdLCB1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKSA9Plxue1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGFzPWdldExvY2FseShcInVzZXJcIik7XG4gICAgICAgIGlmKGlzRW1wdHkodXNlckRhdGFzKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB1c2VyPUpTT04ucGFyc2UodXNlckRhdGFzKTtcbiAgICAgICAgICAgIGlmKGlzRW1wdHkodXNlci5pZCkgfHzCoGlzRW1wdHkodXNlci50b2tlbikgfHwgaXNFbXB0eSh1c2VyLmR1cmF0aW9uKSB8fCB1c2VyLmR1cmF0aW9uIDwgRGF0ZS5ub3coKSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VXNlcih1cmxSZWRpcmVjdGlvbiwgbWVzc2FnZSwgdXJsV2FudGVkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBhcGlVcmwrdXNlclJvdXRlcytjaGVja0xvZ2luUm91dGUrdXNlci50b2tlbik7XG4gICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9ICgpID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U9SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5pc1ZhbGlkICYmIHJlc3BvbnNlLmlkICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuaWQ9PT11c2VyLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubmFtZT1yZXNwb25zZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIubGFuZ3VhZ2U9cmVzcG9uc2UubGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci50aW1lRGlmZmVyZW5jZT1yZXNwb25zZS50aW1lRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnN0YXR1cz1yZXNwb25zZS5zdGF0dXM7Ly8gYydlc3QgbGUgdG9rZW4gcXVpIHNlcnQgw6AgdsOpcmlmaWVyIGxlIHN0YXR1dCDDoCBjaGFxdWUgcmVxdcOqdGUgw6AgbCdBUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTG9jYWx5KFwidXNlclwiLCB1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaSBpbCBzJ2FnaXQgZCd1biBcInVzZXJcIiBldCBxdWUgc29uIGFib25uZW1lbnQgYSBleHBpcsOpLCBqZSBsZSByZWRpcmlnZSB2ZXJzIGxhIGNhaXNzZSA6LSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXM9PT1cInVzZXJcIiAmJiByZXNwb25zZS5uYkRheXNPayA8PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsQWNjb3VudD1zaXRlVXJsK1wiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHVybEFjY291bnQpPT09LTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKFwiL1wiK2NvbmZpZ1RlbXBsYXRlLmFjY291bnRQYWdlK1wiI3N1YnNjcmliZVwiKTsvLyBwYXNzw6llIGRpcmVjdGVtZW50IGljaSwgbCdhbmNyZSAjc3Vic2NyaWJlIG5lIGZvbmN0aW9ubmUgcGFzICE/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXR1cy5sZW5ndGghPT0wICYmIHN0YXR1cy5pbmRleE9mKHJlc3BvbnNlLnN0YXR1cyk9PT0tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTG9jYWx5KFwidXNlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVzZXIodXJsUmVkaXJlY3Rpb24sIG1lc3NhZ2UsIHVybFdhbnRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMb2NhbHkoXCJ1c2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RVc2VyKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoeGhyLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIENldHRlIGZvbmN0aW9uIHNlcnQgw6AgbGEgcHLDqWPDqWRlbnRlIGVuIGNhcyBkZSBjb25uZXhpb24gbm9uIHZhbGlkZVxuY29uc3QgcmVkaXJlY3RVc2VyID0gKHVybFJlZGlyZWN0aW9uLCBtZXNzYWdlLCB1cmxXYW50ZWQpID0+XG57XG4gICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuICAgIGlmKCFpc0VtcHR5KHVybFdhbnRlZCkpXG4gICAgICAgIHNhdmVMb2NhbHkoXCJ1cmxcIiwgdXJsV2FudGVkKTtcbiAgICBpZighaXNFbXB0eSh1cmxSZWRpcmVjdGlvbikpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsUmVkaXJlY3Rpb24pO1xufSIsIi8vIC0tIEdFU1RJT04gREUgTEEgUEFHRSBQRVJNRVRUQU5UIERFIFNFIETDiUJPTk5FUiBERSBUT1VTIExFUyBFTlZPSVNcblxuLy8vIFVuIHRva2VuIGVzdCB0cmFuc21pcyBlbiBwYXJhbcOodHJlIGRlIGwnVXJsLiBJbCBhIHVuZSB2YWxpZGl0w6kgbGltaXTDqSBkYW5zIGxlIHRlbXBzLiBTaSBsZSB0b2tlbiBlc3Qgb2ssIGlsIG4nZXN0IHBhcyBuw6ljZXNzYWlyZSBkJ8OqdHJlIGNvbm5lY3TDqS5cbi8vLyBEYW5zIGxlIGNhcyBvw7kgaWwgbidlc3QgcGx1cyB2YWxpZGUsIG9uIHBldXQgcHJvcG9zZXIgw6AgbCd1dGlsaXNhdGV1ciBkZSBzZSBjb25uZWN0ZXIgw6Agc29uIGNvbXB0ZSBwb3VyIHNlIGTDqXNhYm9ubmVyLlxuLy8vIFNpIGxlIHRva2VuIGVzdCBvaywgb24gdmFsaWRlIGVucmVnaXN0cmVtZW50IGxlIGTDqXNhYm9ubmVtZW50IGV0IGFmZmljaGUgdW4gbWVzc2FnZSBkZSBjb25maXJtYXRpb25cblxuLy8gRmljaGllciBkZSBjb25maWd1cmF0aW9uIGPDtHTDqSBjbGllbnQgOlxuaW1wb3J0IHsgYXBpVXJsLCBhdmFpbGFibGVMYW5ncywgdGhlbWUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2luc3RhbmNlLmpzXCI7XG5jb25zdCBsYW5nPWF2YWlsYWJsZUxhbmdzWzBdO1xuY29uc3QgIHsgYWNjb3VudFBhZ2UgfSA9IHJlcXVpcmUoXCIuLi8uLi92aWV3cy9cIit0aGVtZStcIi9jb25maWcvXCIrbGFuZytcIi5qc1wiKTtcbmNvbnN0IHsgdXNlclJvdXRlcywgdW5zdWJzY3JpYmVSb3V0ZSB9ID0gcmVxdWlyZShcIi4uLy4uL2NvbmZpZy91c2Vyc1wiKTtcblxuLy8gSW1wb3J0YXRpb24gZGVzIGZvbmN0aW9ucyB1dGlsZSBhdSBzY3JpcHQgOlxuaW1wb3J0IHsgZ2V0TG9jYWx5LCByZW1vdmVMb2NhbHksIHNhdmVMb2NhbHkgfSBmcm9tIFwiLi90b29scy9jbGllbnRzdG9yYWdlLmpzXCI7XG5pbXBvcnQgeyBhZGRFbGVtZW50IH0gZnJvbSBcIi4vdG9vbHMvZG9tLmpzXCI7XG5pbXBvcnQgeyBoZWxsb0RldiB9IGZyb20gXCIuL3Rvb2xzL2V2ZXJ5d2hlcmUuanNcIjtcbmltcG9ydCB7IGdldFVybFBhcmFtcyB9IGZyb20gXCIuL3Rvb2xzL3VybC5qc1wiO1xuaW1wb3J0IHsgY2hlY2tTZXNzaW9uLCBzZXRTZXNzaW9uIH0gZnJvbSBcIi4vdG9vbHMvdXNlcnMuanNcIjtcblxuLy8gRGljdGlvbm5haXJlcyA6XG5jb25zdCB7IHNlcnZlckVycm9yIH0gPSByZXF1aXJlKFwiLi4vLi4vbGFuZy9cIitsYW5nK1wiL2dlbmVyYWxcIik7XG5jb25zdCB7IHVuc3Vic2NyaXB0aW9uRmFpbCB9ID0gcmVxdWlyZShcIi4uLy4uL2xhbmcvXCIrbGFuZytcIi9zdWJzY3JpcHRpb25cIik7XG5cbmNvbnN0IGRpdlJlc3BvbnNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZXNwb25zZVwiKTtcblxuaGVsbG9EZXYoKTtcblxuY29uc3QgaW5pdGlhbGlzZSA9IGFzeW5jICgpID0+XG57XG4gICAgdHJ5XG4gICAgeyBcbiAgICAgICAgY29uc3QgZGF0YXM9Z2V0VXJsUGFyYW1zKCk7XG4gICAgICAgIGlmKGRhdGFzICYmIGRhdGFzLnQhPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgYXBpVXJsK3VzZXJSb3V0ZXMrdW5zdWJzY3JpYmVSb3V0ZStkYXRhcy50KTtcbiAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCAmJiByZXNwb25zZS5tZXNzYWdlICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCByZXNwb25zZS5tZXNzYWdlLnJlcGxhY2UoXCIjVVJMXCIsIGFjY291bnRQYWdlKSwgXCJcIiwgW1wic3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoZGl2UmVzcG9uc2UsIFwicFwiLCB1bnN1YnNjcmlwdGlvbkZhaWwucmVwbGFjZShcIiNVUkxcIiwgYWNjb3VudFBhZ2UpLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaChlKVxuICAgIHtcbiAgICAgICAgYWRkRWxlbWVudChkaXZSZXNwb25zZSwgXCJwXCIsIHNlcnZlckVycm9yLCBcIlwiLCBbXCJlcnJvclwiXSk7XG4gICAgfVxufVxuaW5pdGlhbGlzZSgpOyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2779205..71c49af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,25 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" + }, + "@babel/parser": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz", + "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==" + }, + "@babel/types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.0.tgz", + "integrity": "sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, "@mapbox/node-pre-gyp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.0.tgz", @@ -40,19 +59,6 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, - "@types/babel-types": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.9.tgz", - "integrity": "sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA==" - }, - "@types/babylon": { - "version": "6.16.5", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "requires": { - "@types/babel-types": "*" - } - }, "@types/node": { "version": "14.14.37", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", @@ -73,17 +79,9 @@ } }, "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "requires": { - "acorn": "^4.0.4" - } + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "agent-base": { "version": "6.0.2", @@ -108,16 +106,6 @@ } } }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, "ansi-align": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", @@ -265,36 +253,24 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/types": "^7.9.6" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -536,15 +512,6 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -612,14 +579,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { - "source-map": "~0.6.0" - } - }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -828,14 +787,12 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "constantinople": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", "requires": { - "@types/babel-types": "^7.0.0", - "@types/babylon": "^6.16.2", - "babel-types": "^6.26.0", - "babylon": "^6.18.0" + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" } }, "content-disposition": { @@ -861,11 +818,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -908,7 +860,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decompress-response": { "version": "6.0.0", @@ -1116,11 +1069,6 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1596,12 +1544,12 @@ } }, "is-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", "requires": { - "acorn": "~4.0.2", - "object-assign": "^4.0.1" + "acorn": "^7.1.1", + "object-assign": "^4.1.1" } }, "is-extglob": { @@ -1796,14 +1744,6 @@ "json-buffer": "3.0.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, "latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", @@ -1813,11 +1753,6 @@ "package-json": "^6.3.0" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -1900,11 +1835,6 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -2191,9 +2121,9 @@ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "nodemailer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.5.0.tgz", - "integrity": "sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==" + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.0.tgz", + "integrity": "sha512-ikSMDU1nZqpo2WUPE0wTTw/NGGImTkwpJKDIFPZT+YvvR9Sj+ze5wzu95JHkBMglQLoG2ITxU21WukCC/XsFkg==" }, "nodemon": { "version": "2.0.7", @@ -2473,118 +2403,116 @@ "dev": true }, "pug": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", - "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", "requires": { - "pug-code-gen": "^2.0.2", - "pug-filters": "^3.1.1", - "pug-lexer": "^4.1.0", - "pug-linker": "^3.0.6", - "pug-load": "^2.0.12", - "pug-parser": "^5.0.1", - "pug-runtime": "^2.0.5", - "pug-strip-comments": "^1.0.4" + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" } }, "pug-attrs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", - "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", "requires": { - "constantinople": "^3.0.1", - "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.5" + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" } }, "pug-code-gen": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz", - "integrity": "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", "requires": { - "constantinople": "^3.1.2", + "constantinople": "^4.0.1", "doctypes": "^1.1.0", - "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.4", - "pug-error": "^1.3.3", - "pug-runtime": "^2.0.5", - "void-elements": "^2.0.1", - "with": "^5.0.0" + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" } }, "pug-error": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" }, "pug-filters": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", - "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", "requires": { - "clean-css": "^4.1.11", - "constantinople": "^3.0.1", + "constantinople": "^4.0.1", "jstransformer": "1.0.0", - "pug-error": "^1.3.3", - "pug-walk": "^1.1.8", - "resolve": "^1.1.6", - "uglify-js": "^2.6.1" + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" } }, "pug-lexer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", - "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", "requires": { - "character-parser": "^2.1.1", - "is-expression": "^3.0.0", - "pug-error": "^1.3.3" + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" } }, "pug-linker": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", - "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", "requires": { - "pug-error": "^1.3.3", - "pug-walk": "^1.1.8" + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" } }, "pug-load": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", - "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", "requires": { - "object-assign": "^4.1.0", - "pug-walk": "^1.1.8" + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" } }, "pug-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", - "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", "requires": { - "pug-error": "^1.3.3", - "token-stream": "0.0.1" + "pug-error": "^2.0.0", + "token-stream": "1.0.0" } }, "pug-runtime": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" }, "pug-strip-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", - "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", "requires": { - "pug-error": "^1.3.3" + "pug-error": "^2.0.0" } }, "pug-walk": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" }, "pump": { "version": "3.0.0", @@ -2656,11 +2584,6 @@ "picomatch": "^2.2.1" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -2679,11 +2602,6 @@ "rc": "^1.2.8" } }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -2727,14 +2645,6 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==" }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2978,14 +2888,9 @@ } }, "slugify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.0.tgz", - "integrity": "sha512-Q2UPZ2udzquy1ElHfOLILMBMqBEXkiD3wE75qtBvV+FsDdZZjUqPZ44vqLTejAVq+wLLHacOMcENnP8+ZbzmIA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.1.tgz", + "integrity": "sha512-54gP60qIkxaUCFXORn/u+tNPqdTsqvqonB2nxjQV52wWTCuJJ4kbfU7URkpn8646Lr2T3CSh8ecDzzBK/dD9jA==" }, "sqlstring": { "version": "2.3.2", @@ -3182,9 +3087,9 @@ } }, "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-readable-stream": { "version": "1.0.0", @@ -3207,9 +3112,9 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "token-stream": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" }, "toposort-class": { "version": "1.0.1", @@ -3279,55 +3184,6 @@ "is-typedarray": "^1.0.0" } }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, "umzug": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", @@ -3421,9 +3277,9 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" }, "which-module": { "version": "2.0.0", @@ -3493,25 +3349,15 @@ } } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, "with": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", "requires": { - "acorn": "^3.1.0", - "acorn-globals": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" } }, "wkx": { @@ -3522,11 +3368,6 @@ "@types/node": "*" } }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", diff --git a/package.json b/package.json index 9768a8d..ac4377d 100644 --- a/package.json +++ b/package.json @@ -30,11 +30,11 @@ "md5": "^2.3.0", "multer": "^1.4.2", "mysql2": "^2.2.5", - "nodemailer": "^6.5.0", - "pug": "^2.0.4", + "nodemailer": "^6.6.0", + "pug": "^3.0.2", "sequelize": "^5.22.4", "sharp": "^0.25.4", - "slugify": "^1.5.0", + "slugify": "^1.5.1", "striptags": "^3.1.1" }, "devDependencies": {